Что было бы наиболее эффективным / чистым способом глубокой сортировки многомерного списка в Python? - PullRequest
4 голосов
/ 03 ноября 2011

Пример:
Из этого списка:

list = [[10, 9, 1], [2, 1, 1,], [4, 11, 16]]

Я хотел бы иметь:

print list
[[1, 1, 1], [2, 4, 9], [10, 11, 16]]

Возможно ли это с помощью функции list.sort () или мне нужно написать собственный цикл?

Ответы [ 2 ]

1 голос
/ 03 ноября 2011

Вот пример сглаживания, сортировки, а затем перестроения вложенных списков, как @Inerdia предложила в комментариях выше.

Я пытался использовать генераторы и итераторы, где это возможно, но я уверен, что есть более умные и эффективные способы получения результата!

from itertools import izip

l = [[10, 9, 1], [2, 1, 1,], [4, 11, 16]]
# flatten the list and sort it
f = sorted(inner for outer in l for inner in outer)
# group it into 3s again using izip
new_list = [list(l) for l in izip(*[iter(f)]*3)]
0 голосов
/ 03 ноября 2011
>>> l = [[10, 9, 1], [2, 1, 1,], [4, 11, 16]]
>>> L = sorted([sub[i] for sub in l for i in range(3)])
>>> print L
[1, 1, 1, 2, 4, 9, 10, 11, 16]

Теперь вы можете группировать L в группы по 3

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...