为什么这个Python表达式不会产生预期的结果?

时间:2013-06-24 09:30:22

标签: python syntax expression

此代码段:

a = [3, 2, 1]
a.sort()

生成[1, 2, 3]列表。为什么

[3, 2, 1].sort()

不会产生相同的结果?是否有“一线”来实现这一目标?

3 个答案:

答案 0 :(得分:3)

你可以使用
sorted_array = sorted([2,3,1])

答案 1 :(得分:2)

>>> [3, 2, 1].sort()

它会对此列表对象进行排序,但由于此列表的引用数(指向的变量)为 0 ,因此它是垃圾回收的。(即我们不能再访问此列表)< / p>

转到第一个问题,list.sort()就地排序并返回None

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

如果您希望a保持原样,请使用sorted并将结果分配回某个变量。

>>> a = [3, 2, 1]
>>> b = sorted(a)
>>> b
[1, 2, 3]
>>> a
[3, 2, 1]

答案 2 :(得分:1)

list.sort是一种对现有列表进行排序的方法,因此返回None

sorted是一个内置函数,它从输入中创建一个新的排序列表并返回它。