[英]Count the identical pairs in two lists
我的清单有
a = [1,2,3,4,2,7,3,5,6,7]
b = [1,2,3,1,2,5,6,2,6,7]
我需要算一下a[i]==b[i]
。
对于上面的例子,答案应该是
6
答案的详细描述是
a[0]==b[0] (1==1)
a[1]==b[1] (2==2)
a[2]==b[0] (3==3)
a[4]==b[4] (2==2)
a[8]==b[8] (6==6)
a[9]==b[9] (7==7)
在单行中:
sum(x == y for x, y in zip(a, b))
一种方法是使用operator.eq
map
两个列表并获取结果的sum
:
from operator import eq
a = [1,2,3,4,2,7,3,5,6,7]
b = [1,2,3,1,2,5,6,2,6,7]
sum(map(eq, a, b))
# 6
通过映射eq
运算符,我们得到True
或False
具体取决于具有相同索引的项是否相同:
list(map(eq, a, b))
# [True, True, True, False, True, False, False, False, True, True]
您可以使用Python的一些特殊功能:
sum(i1 == i2 for i1, i2 in zip(a, b))
这将
zip()
配对列表项 0
和1
的布尔值 sum()
加1
秒 使用生成器表达式,利用A == A
等于1, A != A
等于零。
a = [1,2,3,4,2,7,3,5,6,7]
b = [1,2,3,1,2,5,6,2,6,7]
count = sum(a[i] == b[i] for i in range(len(a)))
print(count)
6
使用numpy:
import numpy as np
np.sum(np.array(a) == np.array(b))
有点类似于@ yatu的解决方案,但我保存导入,我使用int.__eq__
:
print(sum(map(int.__eq__, a, b)))
输出:
6
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.