[英]Sort a list of sets
我有一個我想要執行交集的集合列表。
是否有一種有效的方法按長度對這些集合進行排序,以優化計算?
sort
的key
參數允許自定義排序鍵。 使用len
可以解決這個問題:
l=<list_of_sets>
l.sort(key=len)
如果您想要最長的集合,請使用reverse
參數:
l.sort(key=len, reverse=True)
例如:
>>> 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])]
更新:今天學到了一些東西 - lambda不是必需的,因為len
沒有額外的參數。 因此, l.sort(lambda x:len(x))
等效於l.sort(key=len)
。 謝謝, Eugene Homyakov !
如果L是集合列表
sorted(L, key=len, reverse=True)
或排序到位
L.sort(key=len, reverse=True)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.