リスト内のアイテムの位置を取得するにはどうすればいいですか? 質問する

リスト内のアイテムの位置を取得するにはどうすればいいですか? 質問する

リストを反復処理していて、特定の条件を満たす場合にアイテムのインデックスを出力したいです。どうすればいいでしょうか?

例:

testlist = [1,2,3,5,3,1,2,1,6]
for item in testlist:
    if item == 1:
        print position

ベストアンサー1

うーん。ここにはリスト内包表記の回答があったのですが、消えてしまいました。

ここ:

 [i for i,x in enumerate(testlist) if x == 1]

例:

>>> testlist
[1, 2, 3, 5, 3, 1, 2, 1, 6]
>>> [i for i,x in enumerate(testlist) if x == 1]
[0, 5, 7]

アップデート:

さて、ジェネレータ式が必要な場合は、ジェネレータ式を使用します。ここで、 for ループ内のリストの理解を再度示します。

>>> for i in [i for i,x in enumerate(testlist) if x == 1]:
...     print i
... 
0
5
7

では、ジェネレータを構築してみましょう...

>>> (i for i,x in enumerate(testlist) if x == 1)
<generator object at 0x6b508>
>>> for i in (i for i,x in enumerate(testlist) if x == 1):
...     print i
... 
0
5
7

そして、とても便利なことに、それを変数に割り当てて、そこから使用することができます...

>>> gen = (i for i,x in enumerate(testlist) if x == 1)
>>> for i in gen: print i
... 
0
5
7

昔はFORTRANを書いていたのに。

おすすめ記事