将两个列表的每个元素放在一起比较
我想比较两个列表(列表 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 integer1和Falsecasts 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.