我发现了很多关于查找两个列表的交集的文章,但没有一篇文章写了如何获得所有交集(也许可以称为子交集)。
示例:
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/