Учитывая 2 списка:
a = [3,4,5,5,5,6]
b = [1,3,4,4,5,5,6,7]
Я хочу найти "перекрытие":
c = [3,4,5,5,6]
Мне также понравится, если бы я смог извлечь "остаток" часть a и b, которая не находится в c.
a_remainder = [5,]
b_remainder = [1,4,7,]
Примечание: a имеет три 5 в нем, а b - два. b имеет два 4 в нем, а a имеет один.
Результирующий список c должен иметь два 5 (ограниченных списком b) и один 4 (ограничен списком a).
Это дает мне то, что я хочу, но я не могу не думать об этом гораздо лучше.
import copy
a = [3,4,5,5,5,6]
b = [1,3,4,4,5,5,6,7]
c = []
for elem in copy.deepcopy(a):
if elem in b:
a.pop(a.index(elem))
c.append(b.pop(b.index(elem)))
# now a and b both contain the "remainders" and c contains the "overlap"
В другой заметке, что более точное имя для того, что я прошу, чем "перекрытие" и "остаток"?