@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]]
я должен искать алгоритм сортировки Питона - я думаю, что это называется Timsort, немного я уверен, что в-месте вроде бы меньше памяти интенсивной и примерно такой же скорости.
Edit: По 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