如何使pop()函数不更改所有已分配的列表

时间:2017-05-16 16:23:34

标签: pop

请参阅下面的代码,每当在列表中应用弹出功能时,我分配给此新列表的另一个列表(旧)将更改为。我认为这是错误的,或者我做错了什么。我需要找到一种在使用pop时保留旧列表的简单方法。

a = [1, 5, 4, 6]
z = []

z = a

z.pop(1)


print(z) #prints [1, 4, 6]

print(a) #prints [1, 4, 

3 个答案:

答案 0 :(得分:0)

您可以使用列表中的copy()方法,而不是使用仅将内存位置分配给列表a的变量z的赋值运算符(=)。

z = a.copy()将列表a复制到列表z。

这是文档:

https://docs.python.org/3.4/tutorial/datastructures.html

答案 1 :(得分:0)

a = [1, 5, 4, 6]
z=[]+a # will copy ( unlike to z.append(a) ).
z.pop(1)
print(z) # [1, 4, 6]
print(a) # [1, 5, 4, 6]

答案 2 :(得分:0)

您需要为新数组创建旧数组的副本。你正在做的只是引用旧数组,在这种情况下,更改新列表也会改变原始引用的数组。无论您使用何种语言,此概念都适用。如果使用JavaScript,那么Why does changing an Array in JavaScript affect copies of the array?

就会回答几乎相似的问题