在Python中查詢兩個列表中相同索引處不匹配的項


有時我們需要根據值和位置(或索引)來比較兩個Python列表中的元素。在本文中,我們將學習如何找出兩個列表中相同位置但值不匹配的元素。

使用for迴圈

我們可以設計一個for迴圈來比較相同索引處的數值。如果值不匹配,我們將索引新增到結果列表中。for迴圈首先獲取第一個索引中的值,然後使用if條件將其與第二個列表中的值進行比較。

示例

 線上演示

listA= [13, 'Mon',23, 62,'Sun']
listB = [5, 'Mon',23, 6,'Sun']

# index variable
idx = 0

# Result list
res = []

# With iteration
for i in listA:
   if i != listB[idx]:
      res.append(idx)
   idx = idx + 1

# Result
print("The index positions with mismatched values:\n",res)

輸出

執行以上程式碼,得到以下結果:

The index positions with mismatched values:
[0, 3]

使用zip函式

zip函式幫助我們編寫更簡潔的程式碼,因為它可以比較每個索引的元素。它會捕獲元素值不匹配的位置的索引值。

示例

 線上演示

listA= [13, 'Mon',23, 62,'Sun']
listB = [5, 'Mon',23, 6,'Sun']

res = [listB.index(n) for m, n in
      zip(listA, listB) if n != m]

# Result
print("The index positions with mismatched values:\n",res)

輸出

執行以上程式碼,得到以下結果:

The index positions with mismatched values:
[0, 3]

使用enumerate函式

這與zip函式的方法類似,只是這裡我們使用for迴圈遍歷每個元素和索引,同時將enumerate函式應用於其中一個列表。

示例

 線上演示

listA= [13, 'Mon',23, 62,'Sun']
listB = [5, 'Mon',23, 6,'Sun']

res = [idx for idx, elem in enumerate(listB)
                           if elem != listA[idx]]

# Result
print("The index positions with mismatched values:\n",res)

輸出

執行以上程式碼,得到以下結果:

The index positions with mismatched values:
[0, 3]

更新於:2020年8月26日

3K+ 次瀏覽

啟動您的職業生涯

透過完成課程獲得認證

開始學習
廣告