Вывод симметричной_дифференции в виде двух отдельных списков
Допустим, у нас есть два списка значений, причем каждый список содержит только уникальные значения. В одном списке никогда не будет повторяющихся значений.
L1 | L2
-------
a | a
b | d
c | e
d | g
e | h
f | i
| j
Мы можем получить различия этих списков, используя set(L1).symmetric_difference(L2)
, но, к сожалению, результаты сводятся воедино в одном списке. Например, вывод list(set(L1).symmetric_difference(L2))
является ['c', 'b', 'h', 'i', 'j', 'f', 'g']
,
Есть ли способ получить два отдельных списка вывода из list(set(L1).symmetric_difference(L2))
лайк ['c', 'b', 'f',]
а также ['h', 'i', 'j', 'g']
вместо?
Или есть способ получить два отдельных списка в качестве выходных данных, сравнивая эти два набора / списки друг с другом только один раз?
1 ответ
Вы можете просто сделать следующее:
dif_1_from_2 = list(set(L1) - set(L2))
dif_2_from_1 = list(set(L2) - set(L1))
И вы можете создать функцию для этого следующим образом:
def get_symmetric_difference(L1, L2):
return list(set(L1)-set(L2)), list(set(L2)-set(L1))
и затем вы называете это так:
print(get_symmetric_difference(L1, L2))
Надеюсь это поможет.