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
的方法是從它的輸入創建了一個新的排序列表,並返回其內置函數。
接受這個答案是因爲它提供了我要求的單行程。分號不是必需的。 –
哦,是啊,我的壞.. –