列表的使用2,深COPY和浅COPY,循环列表,步长切片

name2=names.copy()

列表的使用2,深COPY和浅COPY,循环列表,步长切片

下面我看几种奇怪的现象:

首先把源列表copy以后,把源列表第2个数值修改。那么没毛病。

列表的使用2,深COPY和浅COPY,循环列表,步长切片

如果源列表里,还包含了一个子列表:这也没毛病

列表的使用2,深COPY和浅COPY,循环列表,步长切片

如果我们这个时候修改子列表的数值。我们来看一个神奇的现象:

列表的使用2,深COPY和浅COPY,循环列表,步长切片

copy是一种浅COPY,它只会COPY第一层的数据,而不会深入COPY。只会COPY子列表的内存指针,内存地址。

如果你不用COPY的方法,那问题会更严重:

列表的使用2,深COPY和浅COPY,循环列表,步长切片

结果是这样的,连浅COPY都不如:相当于只把列表的内存地址复制了一下:

列表的使用2,深COPY和浅COPY,循环列表,步长切片

列表的使用2,深COPY和浅COPY,循环列表,步长切片简单来说就是这种情况。

但是如果是数字或者字符串变量,就不会只把内存地址COPY一下结束,数字或者字符串变量是真正的COPY一份。请注意!

列表的使用2,深COPY和浅COPY,循环列表,步长切片

如果你想深COPY一份列表,可以用下面的方法:导入COPY模块,但是要注意copy模块也有两种方法,一个浅COPY(跟之前的names.copy()是一个道理),如下图:

列表的使用2,深COPY和浅COPY,循环列表,步长切片

列表的使用2,深COPY和浅COPY,循环列表,步长切片

COPY模块还有一个深COPY,deepcopy

列表的使用2,深COPY和浅COPY,循环列表,步长切片

列表的使用2,深COPY和浅COPY,循环列表,步长切片

还可以用循环的方法来打印列表的数值:

列表的使用2,深COPY和浅COPY,循环列表,步长切片

打印奇数的数值:

列表的使用2,深COPY和浅COPY,循环列表,步长切片

也可以省略0和-1,写成这样:

列表的使用2,深COPY和浅COPY,循环列表,步长切片

打印全部的数值,也可以这么写:

列表的使用2,深COPY和浅COPY,循环列表,步长切片

上一篇:jenkins结合脚本实现代码自动化部署及一键回滚至上一版本


下一篇:深浅copy和浅copy