Есть ли способ проверить, содержат ли два списка одно и то же значение в Python? - PullRequest
1 голос
/ 04 ноября 2011

Например, если бы у меня было:

a = [20,30,56,78,99]
b = [10,20,40,56,99]

Что я мог бы использовать для поиска в 2 списках, чтобы получить значения 20, 56 и 99?

Примечание: Я не могу использовать функцию установки на этом.

Ответы [ 3 ]

2 голосов
/ 04 ноября 2011

Вы можете использовать для этого наборы:

a = [20, 30, 56, 78, 99]
b = [10, 20, 40, 56, 99]
print set(a) & set(b)

печать

set([56, 99, 20])

Какой ваш желаемый результат.

2 голосов
/ 04 ноября 2011

Наборы Python - это простой и простой способ сделать это:

>>> a = [20,30,56,78,99]
>>> b = [10,20,40,56,99]
>>> set(a) & set(b)
set([56, 99, 20])

Если вы не можете их использовать, то же самое можно сделать с помощью словарей:

>>> d = dict.fromkeys(b)
>>> for k in a:
        if k in d:
            print k

20
56
99

Еслиэлементы не могут быть хэшируемыми, просто сделайте прямой тест содержит:

>>> for k in a:
        if k in b:
            print k

20
56
99
1 голос
/ 04 ноября 2011
values = [x for x in a if x in b] # note that this allows for duplicates

Но на самом деле, просто используйте наборы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...