【问题标题】:Finding sets in a list of sets that are subsets and select them在作为子集的集合列表中查找集合并选择它们
【发布时间】:2019-04-16 03:55:46
【问题描述】:

我只想从一个集合列表中选择那些集合,这些集合是另一个集合的子集,因此基本上是:

sets = [{1, 2, 3}, {6, 7, 8}]
s = {1, 2, 3, 4, 5, 6, 7}
list(compress(sets, [sub <= s for sub in sets]))

这可行,但首先评估列表理解然后使用压缩感觉不对。有没有办法直接索引 sets,比如:

sets[[sub <= s for sub in sets]] ### This does not work!

【问题讨论】:

    标签: python python-3.x set list-comprehension slice


    【解决方案1】:

    试试这个:

    [i for i in sets if all(j in s for j in i)]
    

    测试:

    In [226]: sets = [{1, 2, 3}, {6, 7, 8}, {1,2}, {3}, {7,1}, {7,8}, {8}]
    In [227]: s = {1, 2, 3, 4, 5, 6, 7}
    
    In [228]: [i for i in sets if all(j in s for j in i)]
    Out[228]: [{1, 2, 3}, {1, 2}, {3}, {1, 7}]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-12-30
      • 2021-03-14
      • 2013-09-10
      • 1970-01-01
      • 2011-05-03
      • 2017-01-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多