簡體   English   中英

對集合列表進行排序

[英]Sort a list of sets

我有一個我想要執行交集的集合列表。

是否有一種有效的方法按長度對這些集合進行排序,以優化計算?

sortkey參數允許自定義排序鍵。 使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM