如何比较两个列表并获取匹配项的所有索引

新手上路,请多包涵

这可能是一个我刚刚遗漏的简单问题,但我有两个包含字符串的列表,我想逐个元素地“弹跳”一个,然后返回匹配项的索引。我希望有多个匹配项并想要所有索引。我知道 list.index() 得到第一个,你可以很容易地得到最后一个。例如:

 list1 = ['AS144','401M','31TP01']

list2 = ['HDE342','114','M9553','AS144','AS144','401M']

然后我将遍历 list1 与 list2 进行比较并输出:

[0,0,0,1,1,0] , [3,4] 第一次迭代等

[0,0,0,0,0,1] , [6] 第二个

[0,0,0,0,0,0][] 第三个

编辑:抱歉造成任何混淆。我想以一种方式获得结果,这样我就可以像这样使用它们——我有第三个列表可以调用 list3,我想从输出的索引中的列表中获取值。即 list3[previousindexoutput]=list of cooresponding values

原文由 Kosig 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 299
2 个回答
[([int(item1 == item2) for item2 in list2], [n for n, item2 in enumerate(list2) if item1 == item2]) for item1 in list1]

原文由 ezod 发布,翻译遵循 CC BY-SA 2.5 许可协议

就我个人而言,我将从以下内容开始:

matches = [item for item in list1 if item in list2]

原文由 porgarmingduod 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题