我有一个我想要执行交集的集合列表。
是否有一种有效的方法按长度对这些集合进行排序,以优化计算?
答案 0 :(得分:8)
key
的{{1}}参数允许自定义排序键。使用sort
可以解决问题:
len
如果您想要最长的设置,请使用l=<list_of_sets>
l.sort(key=len)
参数:
reverse
例如:
l.sort(key=len, reverse=True)
更新:今天学到的东西 - lambda不是必需的,因为>>> l=[set((1,2,5,6,7)), set((1,2,3,4,5,6,7)), set((1,)), set((1,2,3))]
>>> l
[set([1, 2, 5, 6, 7]), set([1, 2, 3, 4, 5, 6, 7]), set([1]), set([1, 2, 3])]
>>> l.sort(key=len)
>>> l
[set([1]), set([1, 2, 3]), set([1, 2, 5, 6, 7]), set([1, 2, 3, 4, 5, 6, 7])]
>>> l.sort(key=len, reverse=True)
>>> l
[set([1, 2, 3, 4, 5, 6, 7]), set([1, 2, 5, 6, 7]), set([1, 2, 3]), set([1])]
没有额外的参数。因此,len
相当于l.sort(lambda x:len(x))
。谢谢,Eugene Homyakov!
答案 1 :(得分:7)
如果L是集合列表
sorted(L, key=len, reverse=True)
或排序
L.sort(key=len, reverse=True)