3 回答
隔江千里
TA贡献1906条经验 获得超10个赞
假设现有列表为a, 复制一个新列表为b。
用 b=a 这个语句,并不会复制出一个新的列表,只是复制了列表的地址。
无论是对a还是b进行修改,影响的都是同一个列表。
我们需要使用copy模块中的deepcopy函数:
123 | import copy a = [ 1 , 2 , 3 ] b = copy.deepcopy(a) |
这时的b才是一个列表,而不是列表的地址了。
慕姐8265434
TA贡献1813条经验 获得超2个赞
提问者这么短的描述,有点无法看懂,那就按照通常的几种方法来说吧:
简单列表的拷贝
已知一个列表,求生成一个新的列表,列表元素是原列表的复制
a=[1,2]
b=a这种其实并未真正生成一个新的列表,b指向的仍然是a所指向的对象。
后果:如果对a或b的元素进行修改,a,b的值同时发生变化。
可以使用以下方法解决:
a=[1,2]
b=a[:]这样修改a对b没有影响。修改b对a没有影响。
复杂列表的拷贝:
可以使用copy模块中的deepcopy函数。修改测试如下:
import copy
a=[1,[2]]
b=copy.deepcopy(a)
海绵宝宝撒
TA贡献1809条经验 获得超8个赞
import copy a = [ 1 , 2 , 3 ] #引用 b = a #浅拷贝 c = copy.copy(a) #深拷贝 d = copy.deepcopy(a) #列表解析 e = [i for i in a] |
以上几种都姑且可以称为复制,但也有一些区别
添加回答
举报
0/150
提交
取消