【发布时间】:2012-11-22 12:40:45
【问题描述】:
我正在尝试比较两个列表,以找出它们共有的元素数量。
我遇到的主要问题是当任一列表包含重复元素时,例如
A = [1,1,1,1] and
B = [1,1,2,3]
使用代码
n = 0
for x in A:
if x in B:
n += 1
print n
给我n = 4 的输出,因为从技术上讲,A 的所有元素都在 B 中
我想获得n = 2 的输出,最好不使用集合,无论如何我可以调整我的代码,或者以新的方式思考问题来实现这一目标吗?
谢谢
【问题讨论】:
-
是否有特别的理由避免使用集合?他们似乎提供了完美的解决方案:
len(set(A)&set(B)) -
不是特别的,只是修订表的问题,我们还没有真正使用过集合
-
您确定您希望给出的示例的答案是 2,而不是 1?两个列表中只有一个值(数字 1)。如果集合是
[1,2,3,3]和[1,1,2,3],您希望计数是多少? -
是的,在我给出的示例中,两个列表中都存在两个元素,而它们都是 1,它们是两个列表中都存在的两个元素。在您的示例中,我希望输出为 3,因为第一个列表中的 1、2 和 3 都存在于第二个列表中
标签: python