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

10 投票
7 回答
25491 浏览
提问于 2025-04-16 11:28

这个问题可能很简单,但我还是没搞明白。我有两个包含字符串的列表,我想要逐个比较这两个列表,找出匹配的元素,并返回它们的索引。我预计会有多个匹配项,并想要所有的索引。我知道用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中的值。也就是说,list3[之前输出的索引]=对应值的列表

7 个回答

3

这并没有回答问题。请看我下面的评论。

作为一个开始:

list(i[0] == i[1] for i in zip(list1, list2))
10

我个人建议可以从这个开始:

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

这段代码的意思是:从列表list1中找出那些同时也在列表list2里的元素,然后把这些元素放到一个叫做matches的新列表里。

1

在编程中,有时候我们会遇到一些问题,特别是在使用某些工具或库的时候。比如,有人可能在使用一个叫做“库”的东西时,发现它的某些功能没有按预期工作。这种情况可能会让人感到困惑,因为我们可能不知道问题出在哪里。

通常,解决这类问题的第一步是仔细检查我们写的代码,看看有没有拼写错误或者使用不当的地方。有时候,文档中会有一些提示,告诉我们如何正确使用这些功能。

如果自己检查后还是找不到问题,很多人会选择去网上的论坛,比如StackOverflow,寻求帮助。在那里,其他程序员可能会分享他们的经验,或者提供解决方案。

总之,遇到问题时,不要着急,先自己检查一下代码,然后可以寻求社区的帮助。这样,慢慢就能学会如何解决这些编程中的小麻烦了。

[([int(item1 == item2) for item2 in list2], [n for n, item2 in enumerate(list2) if item1 == item2]) for item1 in list1]

撰写回答