5

在 Python 中,如果我有 2 个列表说:

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

有没有办法找出它们有多少相同的元素。在这种情况下,它将是 2(c 和 d)

我知道我可以只做一个嵌套循环,但是没有像 php 中的内置函数和 array_intersect 函数

谢谢

4

4 回答 4

10

您可以为此使用设置的交叉点:)

l1 = ['a', 'b', 'c', 'd']
l2 = ['c', 'd', 'e']
set(l1).intersection(l2)
set(['c', 'd'])
于 2010-03-23T13:18:49.280 回答
6
>>> l1 = ['a', 'b', 'c', 'd']
>>> l2 = ['c', 'd', 'e']
>>> set(l1) & set(l2)
set(['c', 'd'])
于 2010-03-23T13:19:26.767 回答
5

如果您只有唯一元素,则可以使用 set 数据类型并使用交集:

s1, s2 = set(l1), set(l2)
num = len(s1.intersection(s2))
于 2010-03-23T13:21:27.003 回答
1

使用集合:

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
于 2010-03-23T13:29:33.620 回答