簡體   English   中英

如何在兩個列表中查找匹配的索引

[英]How to find the indexes of matches in two lists

我目前陷入困境,試圖為以下列表理解問題找到一個很好的解決方案:

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

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

你很近,在這里使用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]
[i for i, (a,b) in enumerate(zip(vec1,vec2)) if a==b]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM