如何在两个列表中找到匹配项的索引

2024-04-26 09:56:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前正努力为以下问题找到一个好的解决方案:

在两个列表中很容易找到具有相同索引的相等值

>>> vec1 = [3,2,1,4,5,6,7]
>>> vec2 = [1,2,3,3,5,6,9]
>>> [a for a, b in zip(vec1, vec2) if a == b]
[2,5,6]

但是,我只需要这些匹配发生的列表中的索引,而不是值本身。使用上面的示例,我想要的输出是:[1,4,5]

我东拼西凑,但我只能想出一个“多行”的解决方案。有人知道我怎样才能找到更具Python风格的索引吗?你知道吗


Tags: in示例列表forif风格zip解决方案
2条回答
[i for i, (a,b) in enumerate(zip(vec1,vec2)) if a==b]

你很接近,在这里使用enumerate()。你知道吗

enumerate()返回一个元组,其中第一个元素是索引,第二个元素是从iterable获取的数据。你知道吗

In [169]: vec1 = [3,2,1,4,5,6,7]

In [170]: vec2 = [1,2,3,3,5,6,9]

In [171]: [i for i,(a, b) in enumerate(zip(vec1, vec2)) if a == b]
Out[171]: [1, 4, 5]

相关问题 更多 >