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()
它做这个排序列表对象,但作为参考(变量指向)到这个列表是的
数量,所以它是垃圾回收。(即我们不能访问此列表了)回到第一个问题,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,所以这个列表可能会永远存在。 – delnan
'list.sort()'返回'None'而不是list,其中'b = [3,2,1] .sort()'会起作用吗? –
@PaulJurczak python列表的所有就地修改操作都返回'None',没有必要返回正在被修改的同一个对象。如果你想要一个新的副本,请使用'sorted'。我写了一个与此相关的详细答案,您可能想阅读。 http://stackoverflow.com/questions/17141255/can-anyone-explain-why-this-sorting-wont-work/17141264#17141264 –
list.sort
是梳理现有列表因此返回None
sorted
的方法是从它的输入创建了一个新的排序列表,并返回其内置函数。
接受这个答案是因为它提供了我要求的单行程。分号不是必需的。 –
哦,是啊,我的坏.. –