python - 为什么这不分配一个副本

标签 python sorting

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

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/

相关文章:

python - 无法使用 pyodbc 连接到 Azure SQL Server

python - 音频文件中的静音/暂停导致 Google 语音转文本转录提前结束

Python:从具有最大长度的子列表中返回前 n 个列表

python - 当我们循环遍历所有元素时保留前 N 个元素

java - 在 Java 中手动排序链表(词法)

c++ - 使用标准 :sort to sort locally

python - 导入错误 : cannot import name _unquotepath

python - 我怎样才能让 django-rest-framework-jwt 在注册时返回 token ?

python - 如何在Python中按修改日期的列表元素对文件进行排序?

javascript - 根据键是否存在和值对对象数组进行排序