简单的 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 问题:为啥我不能将变量分配给排序列表(就地)? [复制]的主要内容,如果未能解决你的问题,请参考以下文章