在python中,我能够得到多个列表的交集:
arr = [[1, 2, 3], [2, 3, 4], [3, 4, 5]]
result = set.intersection(*map(set, arr))输出:
result = {3}现在,我希望将结果作为所有3个嵌套列表的交集,每次取2:
result = {2, 3, 4}因为2,3在第1和第2列表之间是常见的,3、4在第2和第3列表之间是常见的,而3在第1和第3列表之间是常见的。
有内置的功能吗?
发布于 2022-11-24 08:54:29
你可以采取以下所有对交叉口的联合;
import itertools as it
arr = [[1, 2, 3], [2, 3, 4], [3, 4, 5]]
res = set.union(*(set(i).intersection(set(j)) for i,j in it.combinations(arr,2)))
# output {2, 3, 4}*编辑per @DanielHao的评论
发布于 2022-11-24 08:46:01
from itertools import combinations
arr = [[1, 2, 3], [2, 3, 4], [3, 4, 5]]
result = [set.intersection(*map(set, i)) for i in combinations(arr,2)]
# print(list(combinations(arr,2)) to get the combinations
# [{2, 3}, {3}, {3, 4}]https://stackoverflow.com/questions/74557859
复制相似问题