Как составить список из элементов других списков, подпадающих под определённые требования?
Всем привет!
Прошу прощения за тупую формулировку вопроса. Только начал изучать язык =
Объясню на примере:
Есть два списка:
а= [1, 1, 2, 2, 3, 3, 4, 5, 7, 7, 7, 9]
b= [1, 2, 4, 7]
Как вывести список, в котором была бы разница между повторяющимися элементами? т.е. к примеру в 1м списке две "1", во 2м списке одна "1" - в третьем должна быть одна "1". В первом списке три "7", во втором одна "7", соответственно в третьем списке должно быть две "7" и т.д. Но и чтобы элементы уникальные для каждого списка в третьем тоже были, как в данном случае две "3" и "9" из первого списка. Я прочитал про массивы, но у меня никак не получается сделать так как следует =\
Заранее спасибо за помощь!!
Ответы (1 шт):
from collections import Counter
a = [1, 1, 2, 2, 3, 3, 4, 5, 7, 7, 7, 9]
b = [1, 2, 4, 7]
print(list((Counter(a) - Counter(b)).elements()))
Уникальные элементы из b не выводятся, потому что Counter().elements() игнорирует элементы со счётчиком <= 0. Если надо их учитывать, надо вручную пройтись по парам и выписать их тоже. Либо так, но это будет медленней:
print(list(((Counter(a) | Counter(b)) - (Counter(a) & Counter(b))).elements()))