ni8*_*8mr 2 python list set python-2.7 python-3.x
我有一份清单——
list_of_sets = [{0, 1, 2}, {0}]
Run Code Online (Sandbox Code Playgroud)
我想计算列表元素之间的交集。我想过这个解决方案:
a = list_of_sets[0]
b = list_of_sets[1]
c = set.intersection(a,b)
Run Code Online (Sandbox Code Playgroud)
这个解决方案有效,因为我知道列表的元素数量。(所以我可以声明尽可能多的变量,如 a、b 等)
我的问题是我无法找出另一种情况的解决方案,其中列表的元素数量未知。
注意:已经检查了使用循环计算列表元素数量而不是根据结果创建变量的想法。因为我必须将我的代码保存在一个函数中(其中参数是 list_of_sets),所以我需要一个可以用于任何编号列表的更通用的解决方案。
编辑1:
我需要列表中所有元素的解决方案。(不是成对或 3/4 元素)
如果您想要 的所有元素之间的交集all_sets:
intersection = set.intersection(*all_sets)
Run Code Online (Sandbox Code Playgroud)
all_sets是一个集合列表。的set是set类型。
对于成对计算,
这将计算列表中所有 2 个集合的无序对的交集all_sets。如果您需要 3,则3用作参数。
from itertools import combinations, starmap
all_intersections = starmap(set.intersection, combinations(all_sets, 2))
Run Code Online (Sandbox Code Playgroud)
如果您确实需要集合 a, b 进行计算,则:
for a, b in combinations(all_sets, 2):
# do whatever with a, b
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1606 次 |
| 最近记录: |