为什么不分配副本

loc*_*boy 1 python sorting

我有以下代码,我想知道为什么它返回相同的列表而不是副本:

x = [2,1,3]
y = x
y.sort()
print y
print x
Run Code Online (Sandbox Code Playgroud)

为什么这会返回相同的排序列表?

Jer*_*man 5

因为它是就地修改的.

Python列表具有引用语义,这意味着当您将列表分配给另一个变量时,它们实际上指向同一个列表.

如果要复制,请执行以下操作:

x = [2,1,3]
y = x[:]
y.sort()
print y
print x
Run Code Online (Sandbox Code Playgroud)

切片符号确实会导致列表(在这种情况下,整个列表,但你可以做一个小的修改,要求特定的子表)被复制.