У меня есть пара групп списков, и я хотел бы проверить, сколько у них перекрывающихся значений.
Мне удалось сделать это с помощью пары вложенных циклов, но мне интересно, есть ли там - это более эффективный способ выполнения или даже функция для одновременной обработки нескольких «групп», возвращающих массивы с наиболее перекрывающимися значениями.
Мой код пока выглядит так:
group1 = [['a','b','c'], ['1','2','3'], ['x','y','z','w'],['10','20','30','40']]
group2 = [['a','b','x','z'], ['1','2','3','4','5'], ['x','y','z','q','p'],['10','50','60','70']]
group3 = [['a','b','c','x','1'], ['1','2','3','4','6'], ['y','z','w','5'],['10','20','60','70']]
def match(grp1, grp2):
for arr1 in grp1:
for arr2 in grp2:
overlap = len(arr1) + len(arr2) - len(set(arr1+arr2))
if overlap > 0:
print(overlap, overlap/len(arr1), overlap/len(arr2), arr1, arr2)
match(group1, group2)
print()
match(group1, group3)
print()
match(group3, group2)