比较列表以查找python中的常见元素

use*_*831 3 python

可能重复:
Python - 两个列表的交集

我正在尝试比较两个列表,以便找到它们共有的元素数量.

我遇到的主要问题是,例如,当任一列表包含重复的元素时

A = [1,1,1,1]   and  
B = [1,1,2,3]
Run Code Online (Sandbox Code Playgroud)

使用代码

n = 0
for x in A:
   if x in B:
      n += 1
print n
Run Code Online (Sandbox Code Playgroud)

给我的输出n = 4,从技术上讲,A的所有元素都在B中

我想获得输出n = 2,最好不使用套装,无论如何我可以调整我的代码,或者一种新的思考问题的方法来实现这个目标吗?

谢谢

Gar*_*ees 5

这不是完全清楚你的规范是什么,但如果你想在元素的数量A出现在B,不考虑顺序,但与多样性方面,使用collections.Counter:

>>> from collections import Counter
>>> A = [1,1,1,1]
>>> B = [1,1,2,3]
>>> C = Counter(A) & Counter(B)
>>> sum(C.itervalues())
2
>>> list(C.elements())
[1, 1]
Run Code Online (Sandbox Code Playgroud)