这是因为在进行分配后,list
和list2
都引用相同的列表list2=list
。
尝试执行以下操作以查看它们是指相同的对象还是不同的对象:
id(list)
id(list2)
一个例子:
>>> list = [1, 2, 3, 4, 5]
>>> list2 = list
>>> id(list)
140496700844944
>>> id(list2)
140496700844944
>>> list.remove(3)
>>> list
[1, 2, 4, 5]
>>> list2
[1, 2, 4, 5]
如果您确实要创建这样的重复副本,list
而list2
不是引用原始列表,而是引用列表的副本,请使用slice运算符:
list2 = list[:]
一个例子:
>>> list
[1, 2, 4, 5]
>>> list2
[1, 2, 4, 5]
>>> list = [1, 2, 3, 4, 5]
>>> list2 = list[:]
>>> id(list)
140496701034792
>>> id(list2)
140496701034864
>>> list.remove(3)
>>> list
[1, 2, 4, 5]
>>> list2
[1, 2, 3, 4, 5]
另外,请勿将其list
用作变量名,因为最初list
是指类型列表,但是通过定义自己的list
变量,您将隐藏list
引用类型列表的原始变量。例:
>>> list
<type 'list'>
>>> type(list)
<type 'type'>
>>> list = [1, 2, 3, 4, 5]
>>> list
[1, 2, 3, 4, 5]
>>> type(list)
<type 'list'>