【问题标题】:Python - Flatten sets and tuples into one list of setsPython - 将集合和元组展平为一个集合列表
【发布时间】:2022-01-07 22:19:45
【问题描述】:

希望有人可以帮助我解决这个问题。我有一个集合和元组列表,我想将它展平为一个集合列表。

我有什么:

 [({'item1', 'item2'}, 'item_a'),
 ({'item1', 'item2'}, 'item_b'),
 ({'item2', 'item3'}, 'item_a'),
 ({'item2', 'item3'}, 'item_b')]

期望的输出:

[{'item1', 'item2', 'item_a'},
 {'item1', 'item2', 'item_b'},
 {'item2', 'item3', 'item_a'},
 {'item2', 'item3', 'item_b'}]

这些功能我都试过了,还是不行:

list_flat = [item for sublist in list for item in sublist]

flat_list = []
for sublist in t:
    for item in sublist:
        flat_list.append(item)

【问题讨论】:

    标签: python list-comprehension


    【解决方案1】:

    使用可迭代解包:

    >>> l1 = [
    ...  ({'item1', 'item2'}, 'item_a'),
    ...  ({'item1', 'item2'}, 'item_b'),
    ...  ({'item2', 'item3'}, 'item_a'),
    ...  ({'item2', 'item3'}, 'item_b')
    ... ]
    >>> l2 = [{b, *a} for a, b in l]
    >>> l2
    [{'item2', 'item_a', 'item1'}, {'item2', 'item_b', 'item1'}, {'item2', 'item_a', 'item3'}, {'item2', 'item_b', 'item3'}]
    

    (嵌套的集合是无序的)

    列表推导使用了两次序列解包:

    1. 解压原始列表中的 (set, string) 元组。
    2. 解压缩集以创建新集

    【讨论】:

      猜你喜欢
      • 2013-11-29
      • 2013-12-16
      • 1970-01-01
      • 1970-01-01
      • 2021-10-06
      • 2012-11-20
      • 1970-01-01
      • 2021-03-29
      • 1970-01-01
      相关资源
      最近更新 更多