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

时间:2013-01-20 23:20:50

标签: python list list-comprehension

我目前一直在努力为以下列表理解问题找到一个很好的解决方案:

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

>>> 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]

我修好了但我只能想到一个“多线”的解决方案。有谁知道我怎么能以更Pythonic的方式找到索引?

2 个答案:

答案 0 :(得分:7)

你很近,在这里使用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]

答案 1 :(得分:2)

[i for i, (a,b) in enumerate(zip(vec1,vec2)) if a==b]
相关问题