python - 设置元素的同一列表的所有元素之间的交集

标签 python list python-2.7 python-3.x set

<分区>

我有一个 list -

list_of_sets = [{0, 1, 2}, {0}]

我想计算列表元素之间的交集。我考虑过这个解决方案:

a =  list_of_sets[0]

b =  list_of_sets[1]

c =  set.intersection(a,b)

这个解决方案是有效的,因为我知道列表中的元素数量。 (所以我可以声明尽可能多的变量,如 a、b 等)

我的问题是我无法找到另一种情况的解决方案,其中列表元素的数量是未知的。

注意使用循环计算列表元素的数量,而不是根据结果创建变量的想法已经被检查过。因为我必须将我的代码保存在一个函数中(参数是 list_of_sets),所以我需要一个更通用的解决方案,可用于任何编号列表。

编辑 1:

我需要一个列表中所有元素的解决方案。 (不是成对或 3/4 元素)

最佳答案

如果你想要 all_sets 的所有元素之间的交集:

intersection = set.intersection(*all_sets)

all_sets 是集合列表。 setset 类型。


对于成对计算,

这会计算列表 all_sets 中所有 2 组无序对的交集。如果您需要 3,则使用 3 作为参数。

from itertools import combinations, starmap
all_intersections = starmap(set.intersection, combinations(all_sets, 2))

如果您确实需要集合 a、b 进行计算,那么:

for a, b in combinations(all_sets, 2):
    # do whatever with a, b

关于python - 设置元素的同一列表的所有元素之间的交集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28689062/

相关文章:

python - 在 Python 3 中使用 urllib 检索文件(资源)的标题

list - Common lisp 树中的最低级别

c++ - 更新元素 STL 列表列表

list - 将输入流转换为对象列表

python - Python 的哈希函数顺序背后的逻辑是什么?

python - TensorFlow错误: funcsigs module doesn't have signature attribute

python - 如何使用 Sphinx 记录简单的 Python 脚本?

python - 如何解决django中的循环导入错误?

python - 用数据模型方法覆盖 * 和 ** 解包?

python - 从其他列中的值获取列索引 nr