在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+ 次浏览

启动您的职业生涯

通过完成课程获得认证

开始学习
广告
© . All rights reserved.