Подтвердить что ты не робот

Python - используйте "набор", чтобы найти разные элементы в списке

Мне нужно сравнить два списка в Python, и я знаю об использовании команды set для поиска похожих элементов, но есть ли другая команда, которую я мог бы использовать, которая автоматически сравнивала бы их, вместо того чтобы иметь для этого код?

Я хотел бы найти элементы, которые не входят в каждый. Скажем, один из них выглядит следующим образом:

[1, 2, 3, 4, 5, 6] 

а второй список:

[1, 2, 3, 4, 6]

Я хочу найти, что 5 отсутствует в списке, надеюсь, с помощью команды, но я знаю, как цитировать сравнение.

4b9b3361

Ответ 1

Похоже, вам нужна симметричная разница:

a = [1,2,3]
b = [3,4,5]

print(set(a)^set(b))


>>> [1,2,4,5]

Ответ 2

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

Чтобы найти пересечение (элементы, находящиеся в обоих наборах):

>>> a = set([1, 2, 3, 4, 5, 6])
>>> b = set([4, 5, 6, 7, 8, 9])
>>> a & b
set([4, 5, 6])

Чтобы найти разницу (элементы, которые только в одном наборе):

>>> a = set([1, 2, 3, 4, 5, 6])
>>> b = set([4, 5, 6, 7, 8, 9])
>>> a - b
set([1, 2, 3])
>>> b - a
set([7, 8, 9])

Чтобы найти симметричную разницу (элементы, которые находятся в одном или другом, но не оба):

>>> a = set([1, 2, 3, 4, 5, 6])
>>> b = set([4, 5, 6, 7, 8, 9])
>>> a ^ b
set([1, 2, 3, 7, 8, 9])

Надеюсь, что это поможет.

Ответ 3

Простое понимание списка

In [1]: a=[1, 2, 3, 4, 5, 6] 

In [2]: b=[1, 2, 3, 4, 6]

In [3]: [i for i in a if i not in b]
Out[3]: [5]