Skip to main content
 首页 » 编程设计

python之在作为子集的集合列表中查找集合并选择它们

2024年09月03日33duanxz

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

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[[sub <= s for sub in sets]] ### This does not work! 

请您参考如下方法:

试试这个:

[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}]