很多时候我们需要对于 一个list 进行复制,如果我们 用
a = [1,2,3] b = a print(a) print(b) print(id(a)) print(id(b))那么你会发现其实a 和b 指向了相同的一个对象
a = [1,2,3] b = a[:] print(id(a)) print(id(b))你会发现a 确实被复制到了b,对a 进行append 之类操作,不会影响到b。 如果a 是一个层次比较深的list,比如下面这样
a = [[1,2], [3,4], 5] b = a[:] print(id(a)) print(id(b)) a.append(6) print(a) print(b)这样的话,你只是在第一层次进行了copy
print(id(a[0])) print(id(b[0])) a[0].append(7) print(a) print(b)如果像上面这样比较复杂,那么可以选用copy模块的deepcopy函数
import copy a = [[1,2], [3,4], 5] b = copy.deepcopy(a) print(id(a[0])) print(id(b[0])) a[0].append(6) print(a) print(b)很好,这样确实 a 所有的数据都复制给了 b