@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 と呼ばれていると思いますが、インプレース ソートの方がメモリ消費量が少なく、ほぼ同じ速度になると確信しています。
編集:この回答によると、私は間違いなくお勧めしますx.sort()
従来とは異なる方法でリストを並べ替えたい場合は、独自の関数を作成できます (1 つのパラメーターを使用します) lambda
。
たとえば、最初の数値を 2 番目の数値よりも大きく、3 番目の数値よりも大きく重み付けする場合は、次のようにします。
>>> 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]]