列表.排序lis不返回已排序的

2024-03-29 01:40:38 发布

您现在位置:Python中文网/ 问答频道 /正文

{1{1>关于下面的python}我有点困惑:

x= [3,1,2]
y = x.sort()
print(y)  # output = None

我原以为输出是[1,2,3],但是我没有得到。请注意:我知道如何获得正确的输出,但仍然对这里发生的情况感到好奇,因为输出是空的。 在我看来,第二行评估 x、 sort()为[1,2,3],然后将其赋给变量y


Tags: noneoutput情况sortprint
3条回答

代码应该是

x= [3,1,2]
x.sort()
print(x)

输出

^{pr2}$

不需要将x.sort()分配给y

如果要分配给其他变量,请使用:

x= [3,1,2]
y=x.sorted()
print(y)

希望有帮助

您所做的不起作用的原因是方法sort()不返回任何内容。相反,它将自身应用于调用它的对象(在本例中是x),但不返回任何结果。在

您可以用print(x.sort())来验证这一点,它返回None。在

为了达到您想要的效果,您可以先复制x:y = x.copy(),然后对y:y.sort()排序。 这里您可以检查x是否仍然等于[3,1,2],而{}等于{}

list的文档告诉您,对列表调用sort方法将执行就地排序。一、 E它将对当前对象内的值进行排序。因此,它不会返回任何值供您存储在y中

>>> x = [3,1,2]
>>> x.sort()
>>> print(x)
[1, 2, 3]

但是,您可能有合理的理由希望排序X的列表而不实际更改它,而是将排序后的输出存储为一个新对象。您可以通过将X传递给sorted函数来实现这一点

^{pr2}$

相关问题 更多 >