错误的复制?
我们来看一组代码
>>>first = [1, 2, 3, 4, 5]
>>>first
[1, 2, 3, 4, 5]
>>>second = first
>>>second
[1, 2, 3, 4, 5]
看起来没有问题?
我们接着将second列表做出修改
>>>second.append(6)
>>>second
[1, 2, 3, 4, 5, 6]
>>>first
[1, 2, 3, 4, 5, 6]
我们发现,对second修改导致first也发生了修改。这是因为:
first和second指向同一个数据,它们共享这个列表的引用
赋值操作不能把一个列表复制到另一个列表
如何复制数据结构?
列表提供了一个copy方法,完成真正的复制。
>>>third = second.copy()
>>>third
[1, 2, 3, 4, 5, 6]
>>>third.append(7)
>>>second
[1, 2, 3, 4, 5, 6]