例子:
從這個列表:
在Python中對多維列表進行深度排序的最有效/乾淨的方式是什麼?
list = [[10, 9, 1], [2, 1, 1,], [4, 11, 16]]
我想有:
print list
[[1, 1, 1], [2, 4, 9], [10, 11, 16]]
是否有可能與 list.sort()功能還是我必須編寫一個自定義循環?
例子:
從這個列表:
在Python中對多維列表進行深度排序的最有效/乾淨的方式是什麼?
list = [[10, 9, 1], [2, 1, 1,], [4, 11, 16]]
我想有:
print list
[[1, 1, 1], [2, 4, 9], [10, 11, 16]]
是否有可能與 list.sort()功能還是我必須編寫一個自定義循環?
組組L
這裏的扁平化,分揀,然後重建嵌套列表,如@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)]
對我來說似乎很完美,謝謝 – Joucks
>>> 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]
現在你可以在3
我認爲你的意思是L = sorted([sub [i] for sub in l for i in range(3)]) 謝謝,我會猜到 – Joucks
對不起。已更新 –
你確定你想要的是[[1,1,1],[2,4,9],[10,11,16]]而不是[[2,1,1 ],[4,11,16],[10,9,1]]如Max所示? –
ups))我完全誤解了這個問題。投票刪除我的答案。 – Max
是的,我想排序值,而不是嵌套列表。 – Joucks