概述
写东西的时候突然想重复利用列表中的值
但是因为列表用等于号来赋值后,被赋值的列表会因为原列表改变而改变
在晚上看到一种方法是用切片的方法List[:],可以只取其值。一瞬间跟发现了真理似的
但是实际使用中却发现,被赋值的列表还是会因为原列表的改变而改变
最后看到了这样一个东西,解决了我的问题,让我感觉以后用这个就行
copy.copy,deepcopy和切片对原来的列表和新列表关联的影响
import copy
a = [1,2,3,4,['1','2']]
b = a
c = a[:]
d = copy.copy(a)
e = copy.deepcopy(a)
# 对a进行改变,观察各种赋值a方法对a,b的关联性区别
a.append(5)
a[4].append('c')
# 结果是
b = [1,2,3,4,['1','2','c'],5]
c = [1,2,3,4,['1','2','c']] # [:]可以抵抗表层append
d = [1,2,3,4,['1','2','c']] # copy.copy可以抵抗表层append
e = [1,2,3,4,['1','2']] # copy.deepcopy一点也不会变
#另外
e.append(2)
e
result:
[1, 2, 3, 4, ['1', '2'], 2] # 还可以继续改变,就等于两个东西了
所以直接用copy.deepcopy就可以做到想做的一切了
而且copy.deepcopy还可以继续改变,就是之前说的完全两个不同的东西了
Q.E.D.
Comments | 0 条评论