我想比较两个列表(列表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中做到这一点?
发布于 2021-05-30 06:23:14
您可以使用生成器表达式。
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) # 3zip(list1, list2)返回一个迭代器,其中包含list1和list2中每个值的元组,实质上形成两个列表中相应项的对:
print(list(zip(list1, list2))) # [(1, 1), (2, 7), (3, 9), (4, 4), (5, 5)]然后,您可以在列表理解中检查每一对是否相等,从而创建True或False的列表
print([i == j for i, j in zip(list1, list2)]) # [True, False, False, True, True]您可以获取此列表的sum,因为True强制转换为整数1,False强制转换为整数0。注意,为了更有效地利用内存,我们可以在sum调用中使用生成器表达式,而不是列表理解(省略[])。
发布于 2021-05-30 06:19:42
只需循环遍历两个列表,并检查值是否相同:
list1 = [1, 2, 3, 4, 5]
list2 = [1, 7, 9, 4, 5]
same = 0
for i in range(len(list1)): # assuming the lists are the same length
if list1[i] == list2[i]:
same += 1
print(same)输出:3
发布于 2021-05-30 07:04:37
您可以采用一种不同的方法。如果两个数字都相等,则两个数字都被减去,值将为零。所以,我们可以计算0的值。
注:此方法仅适用于数字。
In [13]: list(map(int.__sub__, list1, list2)).count(0)
Out[13]: 3https://stackoverflow.com/questions/67756125
复制相似问题