@arshajii打我一記重拳,而他的回答是好。但是,如果你更喜歡就地排序:
>>> pop = [[1,5,3],[1,1,1],[7,5,8],[2,5,4]]
>>> pop.sort(key=sum)
>>> pop
[[1, 1, 1], [1, 5, 3], [2, 5, 4], [7, 5, 8]]
我要回去看看Python的排序算法 - 我想,這就是所謂的Timsort,有點我敢肯定就地排序將是更少的內存密集和大約相同的速度。
編輯:按照this答案,我肯定會推薦x.sort()
如果您希望將列出一個不那麼傳統的方式進行排序,你可以寫自己的函數(即一個參數。)在出發的風險一場火焰戰爭,我會嚴厲勸告lambda
。
例如,如果你想比第二數量比更重的第三號等權重更大的第一個數字:就地建議排序,除非你絕對需要一個新的列表
>>> def weightedSum(listToSum):
... ws = 0
... weight = len(listToSum)
... for i in listToSum:
... ws += i * weight
... weight -= 1
... return ws
...
>>> weightedSum([1, 2, 3])
10
>>> 1 * 3 + 2 * 2 + 3 * 1
10
>>> pop
[[1, 5, 3], [1, 1, 1], [7, 5, 8], [2, 5, 4]]
>>> pop.sort(key=weightedSum)
>>> pop
[[1, 1, 1], [1, 5, 3], [2, 5, 4], [7, 5, 8]]
>>> pop += [[1, 3, 8]]
>>> pop.sort(key=weightedSum)
>>> pop
[[1, 1, 1], [1, 5, 3], [1, 3, 8], [2, 5, 4], [7, 5, 8]]
(無論如何+1) – inspectorG4dget
@ inspectorG4dget當然,我也爲此添加了一個方法。 – arshajii