2

此代码片段:

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

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

[3, 2, 1].sort()

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

4

3 回答 3

3

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

于 2013-06-24T09:33:50.490 回答
2
>>> [3, 2, 1].sort()

它确实对这个列表对象进行了排序,但是由于指向这个列表的引用(变量指向)的数量是0,所以它被垃圾收集了。(即我们不能再访问这个列表了)

来到您的第一个问题,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]
于 2013-06-24T09:33:13.213 回答
1

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

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

于 2013-06-24T09:39:25.273 回答