例如,我有兩個集合串列:
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] 不共享公共元素。(沒有交叉口)
在這種情況下,{'a','b'}中沒有共同元素{'c','d','e'}。
{'c','d'}中沒有共同元素{'e','f'}。{'a','b','c'}有共同的元素'a'并且'b'在{'a','b','d'}.{'c','f'}有共同的元素'c'并且'f'在{'c','f'}.
所以list1[0]and在andlist1[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)
這顯然是不正確的。任何幫助表示贊賞。
uj5u.com熱心網友回復:
您可以列舉壓縮串列并根據這對集合是否不相交來過濾索引:
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]
uj5u.com熱心網友回復:
我找到了一個解決方案,我正在使用字典來輸出每組的常用字母
iter = [i for i in range(len(list1))]
list3 = []
dict = {}
for i in iter:
for l1, l2 in zip(list1[i], list2[i]):
letter = ""
if l1 not in list2[i]:
letter = l1
if l2 not in list1[i]:
letter = l2
if letter != '':
dict[f'Index {str(i)}'] = letter
print(dict)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/413367.html
標籤:
