簡體   English   中英

計算兩個列表中的相同對

[英]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運算符,我們得到TrueFalse具體取決於具有相同索引的項是否相同:

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()配對列表項
  • 使用生成器表達式迭代配對的項目
  • 將項目對擴展為兩個變量
  • 比較變量,得到一個也可用作01的布爾值
  • 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM