2013-01-20 32 views
4

我目前停留在試圖找到下面的列表理解問題一個很好的解決方案:如何找到匹配的索引以兩個列表

可以很容易地找到兩個列表具有相同指數相等的值,例如

>>> 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的方式找到索引嗎?

+0

你有什麼計劃與指標呢? –

+0

@KarlKnechtel:好問題。你是數學家嗎? – Excalibur

回答

7

您已經關閉,請使用enumerate()這裏。

enumerate()返回一個元組,其中第一個元素是索引,第二個元素是從迭代中獲取的數據。

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

哇!謝謝你,阿什維尼! – Excalibur

2
[i for i, (a,b) in enumerate(zip(vec1,vec2)) if a==b] 
+0

謝謝你manu-fatto!很簡單,我必須承認。 – Excalibur

相關問題