python - 比较两个列表中的每个元素
问题描述
我想比较两个列表(列表 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)
返回一个迭代器,其中包含 和 中每个值的元组list1
,list2
本质上是从两个列表中形成一对对应项:
print(list(zip(list1, list2))) # [(1, 1), (2, 7), (3, 9), (4, 4), (5, 5)]
然后,您可以检查每对在列表推导中是否相等,创建True
or列表False
:
print([i == j for i, j in zip(list1, list2)]) # [True, False, False, True, True]
您可以sum
将此列表的True
转换为整数1
并False
转换为整数0
。请注意,我们可以[]
在调用中使用生成器表达式而不是列表推导(省略 ),sum
以提高内存效率。
推荐阅读
- c++ - 如何注册 Qt C++ 对象以在 QML 中使用它
- c++ - 当我将来自 C++ 派生类的指针分配给一个指针时,地址发生了变化
- javascript - 将 onload 函数与 onresize 函数连接
- angular - Angular SSR 构建时间过长
- sql - 年百分比
- c# - 如何按内容设置 DataGridTemplateColumn 的宽度?
- javascript - 来自 JSON 数组的总和值
- c++ - 如何在 MFC-Dialog 中使用 OnDraw
- python - Python-Flask:在windows终端运行flask时,总是出现乱七八糟的文字。(贴图)
- reactjs - 条件渲染,使用超时 Invalid hook call React