name2=names.copy()
下面我看几种奇怪的现象:
首先把源列表copy以后,把源列表第2个数值修改。那么没毛病。
如果源列表里,还包含了一个子列表:这也没毛病
如果我们这个时候修改子列表的数值。我们来看一个神奇的现象:
copy是一种浅COPY,它只会COPY第一层的数据,而不会深入COPY。只会COPY子列表的内存指针,内存地址。
如果你不用COPY的方法,那问题会更严重:
结果是这样的,连浅COPY都不如:相当于只把列表的内存地址复制了一下:
简单来说就是这种情况。
但是如果是数字或者字符串变量,就不会只把内存地址COPY一下结束,数字或者字符串变量是真正的COPY一份。请注意!
如果你想深COPY一份列表,可以用下面的方法:导入COPY模块,但是要注意copy模块也有两种方法,一个浅COPY(跟之前的names.copy()是一个道理),如下图:
COPY模块还有一个深COPY,deepcopy
还可以用循环的方法来打印列表的数值:
打印奇数的数值:
也可以省略0和-1,写成这样:
打印全部的数值,也可以这么写: