主に自分用メモ:
Python の組み込み関数 enumerate
はジェネレータにも対応しているのか疑問に思ったので実験してみた。
疑問
enumerate() にジェネレータを渡すと、その場でリスト化して展開されてしまうのか?
(そもそも渡せるか?という確認も込み)
実験
以下のようなジェネレータを用意する
>>> def test(value):
... for i in range(value):
... print(i)
... yield i
...
ジェネレータとして動作することを確認
>>> for v in test(10):
... print(v)
...
0 # test() 内の print からの出力
0 # for 文の print からの出力
1
1
2
2
3
3
4
4
5
5
6
6
7
7
8
8
9
9
用意したジェネレータを enumerate
に渡してみる
>>> for i, v in enumerate(test(10)):
... print(i, v)
...
0 # test() 内の print からの出力
0 0 # for 文の print からの出力
1
1 1
2
2 2
3
3 3
4
4 4
5
5 5
6
6 6
7
7 7
8
8 8
9
9 9
>>>
結果
-
enumerate
にジェネレータを渡せる。 -
enumerate
にジェネレータを渡すとジェネレータが返却する要素ごとにインデックスを付加して返却してくれる。