4

私は現在、次のリスト理解の質問に対する適切な解決策を見つけようとしています:

2 つのリストで同じインデックスを持つ等しい値を簡単に見つけることができます。

>>> 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 な方法でインデックスを見つける方法を知っている人はいますか?

4

2 に答える 2

7

あなたは近くにいました、enumerate()ここで使用してください。

enumerate()最初の要素がインデックスで、2番目の要素が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]
于 2013-01-20T23:22:04.603 に答える
2
[i for i, (a,b) in enumerate(zip(vec1,vec2)) if a==b]
于 2013-01-20T23:23:55.137 に答える