1. ホーム
  2. python

[解決済み] Pythonのenumerateは怠慢か?

2022-11-27 22:54:10

質問

Pythonのenumerate()にジェネレータ関数の結果を渡すとどうなるのか知りたいです。例を挙げます。

def veryBigHello():
    i = 0
    while i < 10000000:
        i += 1
        yield "hello"

numbered = enumerate(veryBigHello())
for i, word in numbered:
    print i, word
    

列挙は遅延的に反復されるのでしょうか、それともすべてを <enumerate object> に放り込むのでしょうか?私はそれが遅延であることを99.999%確信しているので、ジェネレータ関数とまったく同じように扱うことができますか、それとも何か注意する必要がありますか?

どのように解決するのですか?

それは怠慢です。 そうであることを証明するのはかなり簡単です。

>>> def abc():
...     letters = ['a','b','c']
...     for letter in letters:
...         print letter
...         yield letter
...
>>> numbered = enumerate(abc())
>>> for i, word in numbered:
...     print i, word
...
a
0 a
b
1 b
c
2 c