此代码片段:
a = [3, 2, 1]
a.sort()
产生[1, 2, 3]
列表。为什么
[3, 2, 1].sort()
不会产生相同的结果?是否有“单线”来实现这一目标?
此代码片段:
a = [3, 2, 1]
a.sort()
产生[1, 2, 3]
列表。为什么
[3, 2, 1].sort()
不会产生相同的结果?是否有“单线”来实现这一目标?
您可以使用
sorted_array = sorted([2,3,1])
>>> [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]
list.sort
是一种对现有列表进行排序的方法,因此返回None
sorted
是一个内置函数,它从输入创建一个新的排序列表并返回它。