简单的 Python 问题:为啥我不能将变量分配给排序列表(就地)? [复制]

Posted

技术标签:

【中文标题】简单的 Python 问题:为啥我不能将变量分配给排序列表(就地)? [复制]【英文标题】:Simple Python question: Why can't I assign a variable to a sorted list (in place)? [duplicate]简单的 Python 问题:为什么我不能将变量分配给排序列表(就地)? [复制] 【发布时间】:2020-07-25 05:22:16 【问题描述】:
y = [1, 3, 2, 4]
x = y.sort()
print(x)

x 是None。为什么这种语法适用于例如 javascript 而不是 Python?

【问题讨论】:

函数需要返回一个值才能使用返回值。请注意 sort 的文档所说的内容。 因为list.sort() 不返回排序后的数组,所以这是就地发生的。这就是python的工作原理/ 【参考方案1】:

sort(和reverse)就地更改列表。

如果你愿意,可以使用sorted:

x = sorted(y)

这在文档中的Data Structures 部分进行了解释。

【讨论】:

【参考方案2】:

因为sort() 是一个就地执行的操作(不需要重新分配)。它返回None,就像append()extend() 和其他列表方法一样。

【讨论】:

【参考方案3】:

在这里,y.sort() 对 y 进行排序,不能分配给另一个变量。在这里,您可以像 x = sorted(y) 一样使用 sorted() 或:

x = [i for i in sorted(y)]

或者让我们使用漂亮的单线:

x = [y.pop(y.index(min(y))) for i in range(len(y))]

【讨论】:

以上是关于简单的 Python 问题:为啥我不能将变量分配给排序列表(就地)? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

为啥我不能将 string::back 分配给字符串?

当我将一个字典分配给另一个变量时,为啥 Python 会同时更新两个字典? [复制]

为啥右值不能分配给 constexpr 引用变量

为啥可以将切片分配给空接口但不能将其强制转换为相同的空接口

为啥不能将父指针分配给子指针?

为啥我不能将 UIView 分配给 self.view?