python - 计算两个列表的所有幂集交集

标签 python list set intersection

我发现了很多关于查找两个列表的交集的文章,但没有一篇文章写了如何获得所有交集(也许可以称为子交集)。

示例:

list1 = ['a', 'b', 'c', 'd']
list2 = ['b', 'c', 'd', 'e']

print (find_all_intersections(list1, list2))

输出:

['b', 'c', 'd', 'bc', 'bd', 'cd', 'bcd']

有什么函数可以做到这一点吗?

最佳答案

嗯,其实很简单。找到交集后,计算幂集:

from itertools import chain, combinations

s = set(list1).intersection(list2)
[''.join(c) for c in chain.from_iterable(
    combinations(s, r) for r in range(len(s)+1)) if c]

['b', 'c', 'd', 'bc', 'bd', 'cd', 'bcd']

有关生成发电机组的更多信息,请访问 here

关于python - 计算两个列表的所有幂集交集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53711280/

相关文章:

c - 具有多个指针的二维链表 C

java - 如何检索已添加到集合中的最新记录?

SQLite 两组之间的差异

python - 计算 Pandas 数据框中某个值的出现次数

java - 列表实现中的 ClassCastException?

2ld.1ld(二级域名。1st(顶级)级域名)名称列表?

Python:快速提取大量列表中所有可能的 2 组合之间的交集

Python – 验证输入是真实文件夹而不是根目录

python - 使用python将一个字符串拆分成它的句子

python - 参数 1 必须有一个 "write"方法 - 从 json 创建 csv 文件