您可以按长度对列表列表进行排序,如下所示:
l1 = [1,2,3]
l2 = [1,2,3]
l3 = [1,2]
lists = [l1, l2, l3]
sorted_lists = sorted(lists, key=len)
print sorted_lists #[[1,2], [1,2,3], [1,2,3]]
我无法弄清楚如何跟踪这些指标,然后将sorted_lists
的内容与原始列表名称l1
,l2
和{{1 }}
This接近,但我不确定按长度排序时如何实施解决方案。
答案 0 :(得分:8)
很有可能。只需稍微修改一下密钥,即可指定要应用len
的正确谓词。
>>> lists = [l1, l2, l3]
>>> lists = sorted(enumerate(lists), key=lambda x: len(x[1])) # enumerate is a tuple of (index, elem), sort by len(elem)
[(2, [1, 2]), (0, [1, 2, 3]), (1, [1, 2, 3])]
答案 1 :(得分:1)
使用arg.sort()
numpy
和list comprehension
可以采用其他方式:
import numpy
new_list = [(index, lists[index])for index in numpy.argsort(lists)]
print(new_list)
输出:
[(2, [1, 2]), (0, [1, 2, 3]), (1, [1, 2, 3])]