簡體   English   中英

python如何合並一個集合列表並將它們作為一個集合返回?

[英]How can python merges a list of sets and return them as a set?

我有一個這樣的集合列表:

set_list = [{1, 2, 3}, {4, 5, 1, 6}, {2, 3, 6}, {1, 5, 8}]

現在我想將所有集合合並在一起並返回一組所有集合,如下所示:

final_set = {1, 2, 3, 4, 5, 6, 8}

我已經使用了此代碼,但它無法正常工作:

tmp_list = []
final_set = set(tmp_list.append(elem) for elem in set_list)

我該怎么辦?

您可以使用set.union進行拆包以獲得干凈的單行。

>>> set.union(*set_list)
{1, 2, 3, 4, 5, 6, 8}

您可以使用functools模塊中的reduce函數

>>> from functools import reduce
>>> set_list = [{1,2,3}, {4,5,1,6}, {2,3,6}, {1,5,8}]
>>> reduce(lambda x, y: x | y, set_list)
{1, 2, 3, 4, 5, 6, 8}

您可以遍歷列表並創建所有集合的並集:

new_set = set()
for i in set_list:
    new_set =  set.union(new_set, i)
print(new_set)

輸出:

{1, 2, 3, 4, 5, 6, 8}

你可以使用理解來做到這一點,如下所示

set_list = [{1, 2, 3}, {4, 5, 1, 6}, {2, 3, 6}, {1, 5, 8}]
final_set = set(elem for sub in set_list for elem in sub)
print(final_set)

輸出

{1, 2, 3, 4, 5, 6, 8}

解釋:這是列表列表扁平化理解的簡單改編,可以用作set是可迭代的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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