Как объединить два списка?

есть задача: нужно объединить два списка:

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]
→ Ссылка
Автор решения: MBo

Из первого массива сделайте set.

Если порядок недостающих элементов тоже важен, то пройдите по второму с проверкой - если текущего элемента нет в set - добавьте его к первому массиву

→ Ссылка
Автор решения: CrazyElf

Можно сходу придумать кучу способов с разной степенью ручного вмешательства. Наиболее "автоматический" наверное будет такой:

c = list(dict.fromkeys(a + b))

Но работает данный способ только начиная с какой-то версии питона, когда сортировка элементов в словарях стала устойчивой. В более ранних версиях порядок элементов может нарушиться.

А типовой "ручной" способ - с помощью спискового сокращения выбрать те элементы второго списка, которых нет в первом, и добавить получившийся список к первому списку.

→ Ссылка
Автор решения: user207200
from itertools import chain

c = list(chain(a, filter(lambda item: item not in a, b)))
print(c) # -> [3, 4, 1, 2, 5, 6]
→ Ссылка