这是因为在进行分配后,
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'>



