我有以下代码,我想知道为什么它返回相同的列表而不是副本:
x = [2,1,3]
y = x
y.sort()
print y
print x
为什么这会返回相同的排序列表?
最佳答案
因为它是就地修改的。
Python 列表具有引用语义,这意味着当您将一个列表分配给另一个变量时,它们实际上指向同一个列表。
如果要复制,请执行以下操作:
x = [2,1,3]
y = x[:]
y.sort()
print y
print x
slice 表示法确实会导致列表(在本例中为整个列表,尽管您可以进行小的修改以请求特定的子列表)被复制。
关于python - 为什么这不分配一个副本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6904856/