web-dev-qa-db-ja.com

Pythonのジェネレーター関数から一度に1つの値を取得する方法は?

非常に基本的な質問-Pythonのジェネレーターから1つの値を取得する方法は?

これまでのところ、gen.next()と書くことで取得できることがわかりました。これが正しい方法であることを確認したいだけですか?

89
bodacydo

はい、または2.6以降ではnext(gen)

120

Python <= 2.5では、gen.next()を使用します。これはすべてのPython 2.xバージョンで機能しますが、Python 3.xでは機能しません

Python> = 2.6では、next(gen)を使用します。これは組み込み関数であり、より明確です。 Python 3でも機能します。

これらは両方とも、サブクラス化によってオーバーライドできる特別な名前の関数next()を呼び出すことになります。ただし、Python 3では、この関数は__next__()に名前が変更され、他の特別な関数との一貫性が保たれています。

55

これが正しい方法です。

next(gen)を使用することもできます。

http://docs.python.org/library/functions.html#next

9
recursive

使用(python 3)の場合)

next(generator)

ここに例があります

def fun(x):
    n = 0
    while n < x:
        yield n
        n += 1
z = fun(10)
next(z)
next(z)

印刷する必要があります

0
1
6
dshri

python 3ではgen.next()はありませんが、next(gen)を使用することができます。

1
Niki.py