示例:
从此列表中:
list = [[10, 9, 1], [2, 1, 1,], [4, 11, 16]]
我想要:
print list
[[1, 1, 1], [2, 4, 9], [10, 11, 16]]
是否可以使用list.sort((函数,或者我必须编写一个自定义循环?
如@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)]
>>> 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个的组