将两个列表的每个元素放在一起比较

我想比较两个列表(列表 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中做到这一点吗?

回答

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

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)返回一个包含list1and中每个值的元组的迭代器list2,本质上从两个列表中形成对应项对:

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此列表的 , as Truecasts to the integer1Falsecasts to the integer 0。请注意,我们可以[]sum调用中使用生成器表达式而不是列表推导式(省略)以提高内存效率。

  • It would be even better to omit the `[]` and pass a *generator expression* to `sum`, to avoid building up an unnecessary list in memory.

以上是将两个列表的每个元素放在一起比较的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>