1. ホーム
  2. python

[解決済み] リスト内のアイテムの位置を取得するには?

2022-04-20 02:32:04

質問

リストを反復処理していて、ある条件を満たした場合にその項目のインデックスを表示させたい。どうすればよいでしょうか?

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

解決方法は?

うーん。 ここにリスト内包の回答があったんだけど、消えちゃったね。

これです。

 [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を書いていたと思うと。