Как объединить два списка?
есть задача: нужно объединить два списка:
a = [3,4,1,2]
b = [1,2,3,4,5,6]
на выходе нужно получить:
c = [3,4,1,2,5,6]
Нужно не нарушать порядок элементов списка, добавить только недостающие элементы в конец. Нашел только решение в библиотеке NumPy, но она мне не подходит, т.к. нужно загрузить решение задачи на сайт с автоматической системой тестов.
Ответы (4 шт):
Могу предложить такое очевидное решение через list comprehenshion:
a = [3,4,1,2]
b = [1,2,3,4,5,6]
c = a + [x for x in b if x not in a]
print(c) # [3, 4, 1, 2, 5, 6]
Из первого массива сделайте set.
Если порядок недостающих элементов тоже важен, то пройдите по второму с проверкой - если текущего элемента нет в set - добавьте его к первому массиву
Можно сходу придумать кучу способов с разной степенью ручного вмешательства. Наиболее "автоматический" наверное будет такой:
c = list(dict.fromkeys(a + b))
Но работает данный способ только начиная с какой-то версии питона, когда сортировка элементов в словарях стала устойчивой. В более ранних версиях порядок элементов может нарушиться.
А типовой "ручной" способ - с помощью спискового сокращения выбрать те элементы второго списка, которых нет в первом, и добавить получившийся список к первому списку.
from itertools import chain
c = list(chain(a, filter(lambda item: item not in a, b)))
print(c) # -> [3, 4, 1, 2, 5, 6]