Как получить список с элементами, которые содержатся в двух других списках? - PullRequest
2 голосов
/ 11 марта 2010

У нас есть два списка:

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

Как получить список с элементами, которые содержатся в обоих списках:

a_and_b=['2','3','4']

и список элементов, которые содержатся только в одном списке, но не в другом:

only_a=['1']
only_b=['5']

Да, я могу использовать циклы, но это хромает =)

Ответы [ 2 ]

8 голосов
/ 11 марта 2010

если заказ не важен

>>> a=['1','2','3','4']
>>> b=['2','3','4','5']
>>> set(a) & set(b)
set(['3', '2', '4'])

только

>>> set(a).difference(b) # or set(a) - set(b)
set(['1'])

только b

>>> set(b).difference(a)  # or set(b) - set(a)
set(['5'])
5 голосов
/ 11 марта 2010

Просто с использованием наборов:

>>> a=['1','2','3','4']; b=['2','3','4','5']
>>> a = set(a)
>>> b = set(b)
>>> a & b
set(['3', '2', '4'])
>>> a - b
set(['1'])
>>> b - a
set(['5'])
>>>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...