в Python находят число тех же элементов в 2 списках

В Python, если у меня есть 2 списка, скажите:

l1 = ['a', 'b', 'c', 'd']
l2 = ['c', 'd', 'e']

есть ли способ узнать, сколько элементов у них есть то же. В случае об этом был бы 2 (c и d)

Я знаю, что мог просто сделать вложенный цикл, но являюсь там не созданным в функции как в php с функцией array_intersect

Спасибо

5
задан John 23 March 2010 в 13:17
поделиться

4 ответа

Для этого можно использовать заданное пересечение :)

l1 = ['a', 'b', 'c', 'd']
l2 = ['c', 'd', 'e']
set(l1).intersection(l2)
set(['c', 'd'])
10
ответ дан 18 December 2019 в 07:08
поделиться

Использование наборов:

l1 = ['a', 'b', 'c', 'd']
l2 = ['c', 'd', 'e']


def list_count_common(list_a, list_b):
    result = len(list(set(list_a) & set(list_b))) ## this is the line that does what you want
    return result

print list_count_common(l1, l2) ## prints 2
1
ответ дан 18 December 2019 в 07:08
поделиться
>>> l1 = ['a', 'b', 'c', 'd']
>>> l2 = ['c', 'd', 'e']
>>> set(l1) & set(l2)
set(['c', 'd'])
6
ответ дан 18 December 2019 в 07:08
поделиться

Если у вас есть только уникальные элементы, вы можете использовать заданный тип данных и использовать пересечение:

s1, s2 = set(l1), set(l2)
num = len(s1.intersection(s2))
5
ответ дан 18 December 2019 в 07:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: