计算两个列表中的相同对

Kru*_*h23 16 python list python-3.x

我的清单有

a = [1,2,3,4,2,7,3,5,6,7]
b = [1,2,3,1,2,5,6,2,6,7]
Run Code Online (Sandbox Code Playgroud)

我需要数一下a[i]==b[i]

对于以上示例,答案应为

6
Run Code Online (Sandbox Code Playgroud)

答案的详细说明是

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)
Run Code Online (Sandbox Code Playgroud)

小智 28

单线:

sum(x == y for x, y in zip(a, b))
Run Code Online (Sandbox Code Playgroud)

  • “ sum(1代表zip(a,b)中的x,y,如果x == y)则可能要快得多,这取决于比较结果为False的频率,[正如我最近也发现的那样](https:// stackoverflow.com/q/56288015/4042267)。 (12认同)

yat*_*atu 14

一种方法是map同时列出operator.eq并获取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
Run Code Online (Sandbox Code Playgroud)

通过映射eq运算符,我们在何处获得TrueFalse取决于具有相同索引的项目是否相同:

list(map(eq, a, b))
# [True, True, True, False, True, False, False, False, True, True]
Run Code Online (Sandbox Code Playgroud)


Kla*_* D. 7

您可以使用Python的一些特殊功能:

sum(i1 == i2 for i1, i2 in zip(a, b))
Run Code Online (Sandbox Code Playgroud)

这会

  • 与列表项配对 zip()
  • 使用生成器表达式迭代配对的项
  • 将项目对扩展为两个变量
  • 比较变量,这会导致布尔值也可以用作01
  • 1s与sum()