В Python найдите количество одинаковых элементов в 2 списках
В Python, если у меня есть 2 списка, говорят:
l1 = ['a', 'b', 'c', 'd']
l2 = ['c', 'd', 'e']
Есть ли способ узнать, сколько элементов у них одинаковых. В случае об этом будет 2 (с и г)
Я знаю, что я мог бы просто сделать вложенный цикл, но нет ли встроенной функции, как в PHP с функцией array_intersect
Спасибо
4 ответа
Решение
Вы можете использовать пересечение множества для этого:)
l1 = ['a', 'b', 'c', 'd']
l2 = ['c', 'd', 'e']
set(l1).intersection(l2)
set(['c', 'd'])
>>> l1 = ['a', 'b', 'c', 'd']
>>> l2 = ['c', 'd', 'e']
>>> set(l1) & set(l2)
set(['c', 'd'])
Если у вас есть только уникальные элементы, вы можете использовать заданный тип данных и использовать пересечение:
s1, s2 = set(l1), set(l2)
num = len(s1.intersection(s2))
Используя наборы:
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