Pythonイテレータとジェネレータの違い

(*-*)浩
リリース: 2019-06-22 16:12:17
オリジナル
3153 人が閲覧しました

Iterator はより抽象的な概念です。クラスに next メソッドと iter メソッドがある場合、オブジェクトはそれ自体を返します。文字列、リスト、辞書、タプルなどのコンテナ オブジェクトの場合は、For を使用します。ループトラバーサルは非常に便利です。

Pythonイテレータとジェネレータの違い

バックグラウンドの for ステートメントは、コンテナ オブジェクトの iter() 関数を呼び出します。iter() は Python の組み込み関数です。 iter() は、コンテナ内の要素に 1 つずつアクセスする next() メソッドを定義するイテレータ オブジェクトを返します。next() は Python の組み込み関数でもあります。後続の要素がない場合、next() は StopIteration 例外をスローします。 (推奨される学習: Python ビデオ チュートリアル )

# 随便定义一个list
listArray=[1,2,3]
# 使用iter()函数
iterName=iter(listArray)
print(iterName)
ログイン後にコピー

Generator (ジェネレーター) は、イテレーターを作成するためのシンプルで強力なツールです。これらは、データを返す必要がある場合に yield ステートメントを使用することを除いて、通常の関数と同じように作成されます。 next() が呼び出されるたびに、ジェネレーターは中断した位置を返します (ステートメントが最後に実行された位置とすべてのデータ値を記憶しています)

# 菲波那切数列
def Fib(max):
    n, a, b = 0, 0, 1
    while n < max:
        yield b
        a, b = b, a + b
        n = n + 1
    return '亲!没有数据了...'
# 调用方法,生成出10个数来
f=Fib(10)
# 使用一个循环捕获最后return 返回的值,保存在异常StopIteration的value中
while  True:
    try:
        x=next(f)
        print("f:",x)
    except StopIteration as e:
        print("生成器最后的返回值是:",e.value)
        break
ログイン後にコピー

違い:

ジェネレーターはイテレーターが実行できるすべてのことを実行でき、iter() メソッドと next() メソッドが自動的に作成されるため、ジェネレーターは特に簡潔で、リストの代わりにジェネレーター式を使用するため効率的でもあります。同時に記憶も。プログラム状態を作成および保存するための自動メソッドに加えて、ジェネレーターが終了すると StopIteration 例外が自動的にスローされます。

Python 関連の技術記事の詳細については、Python チュートリアル 列にアクセスして学習してください。

以上がPythonイテレータとジェネレータの違いの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!