首页 > 解决方案 > 比较两个列表中的每个元素

问题描述

我想比较两个列表(列表 a 和列表 b)。

例如:

list a = [a1, a2, a3, a4, a5]

list b = [b1, b2, b3, b4, b5]

如果我们有...

a1 == b1
a2 == b2
a3 == b3
a4 == b4
a5 == b5

结果:5

其他示例:

list 1 = [1, 2, 3, 4, 5]

list 2 = [1, 7, 9, 4, 5]

结果:3

有人可以建议如何在 python 中执行此操作吗?

标签: pythonlist

解决方案


您可以使用生成器表达式。

list1 = [1, 2, 3, 4, 5]
list2 = [1, 7, 9, 4, 5]

num_equal = sum(i == j for i, j in zip(list1, list2))
print(num_equal)  # 3

zip(list1, list2)返回一个迭代器,其中包含 和 中每个值的元组list1list2本质上是从两个列表中形成一对对应项:

print(list(zip(list1, list2)))  # [(1, 1), (2, 7), (3, 9), (4, 4), (5, 5)]

然后,您可以检查每对在列表推导中是否相等,创建Trueor列表False

print([i == j for i, j in zip(list1, list2)])  # [True, False, False, True, True]

您可以sum将此列表的True转换为整数1False转换为整数0。请注意,我们可以[]在调用中使用生成器表达式而不是列表推导(省略 ),sum以提高内存效率。


推荐阅读