例如,我有两个集合列表:
list1 = [{'a','b'}, {'c','d'}, {'a','b','c'}, {'c','f'}]
list2 = [{'c','d','e'}, {'e','f'}, {'a','b','d'}, {'c','f'}]
我需要输出一个索引列表,其中 list1[i] 和 list2[i] 不共享公共(public)元素。 (没有交集)
在这种情况下,{'a','b'}
在 {'c','d','e'}
中没有公共(public)元素.
-
{'c','d'}
在{'e','f'}
中没有公共(public)元素. -
{'a','b','c'}
有共同元素'a'
和'b'
在{'a','b','d'}
. -
{'c','f'}
有共同元素'c'
和'f'
在{'c','f'}
.
所以 list1[0]
和 list1[1]
list2[0]
中没有相同的元素和 list2[1]
它将返回索引列表:list = [0,1]
我的做法是:
for l1,l2 in zip(list1,list2):
for i in l1:
if i in l2:
print(i)
这显然是不正确的。感谢您的帮助。
最佳答案
您可以枚举压缩列表并根据这对集合 is disjoint 是否过滤索引。 :
list1 = [{'a','b'}, {'c','d'}, {'a','b','c'}, {'c','f'}]
list2 = [{'c','d','e'}, {'e','f'}, {'a','b','d'}, {'c','f'}]
indices = [i for i, (a, b) in enumerate(zip(list1, list2)) if a.isdisjoint(b)]
# [0, 1]
关于python - 比较两个集合列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70726564/