Предполагая входные данные l1
и l2
, вы можете рассчитать их упорядоченное объединение с помощью:
l1 + filter(lambda x: x not in l1, l2)
Чтобы получить упорядоченную разность l1 - l2, напишите
filter(lambda x: x not in l2, l1)
Альтернативно, используйте понимание списка:
>>> l1 = [68,31,93,35,10]
>>> l2 = [93,0,22,10,99,33,21,9]
>>> l1 + [el2 for el2 in l2 if el2 not in l1]
[68, 31, 93, 35, 10, 0, 22, 99, 33, 21, 9]
>>> [el1 for el1 in l1 if el1 not in l2]
[68, 31, 35]
Если вы делаете это с очень большим списком (где производительность является проблемой), создайте set
для более быстрого поиска:
>>> sl1 = set(s1)
>>> l1 + [el2 for el2 in l2 if el2 not in sl1]
[68, 31, 93, 35, 10, 0, 22, 99, 33, 21, 9]
>>> sl2 = set(s2)
>>> [el1 for el1 in l1 if el1 not in sl2]
[68, 31, 35]