ホームページ  >  記事  >  バックエンド開発  >  Python でジェネレーター オブジェクトをリセットするには?

Python でジェネレーター オブジェクトをリセットするには?

Susan Sarandon
Susan Sarandonオリジナル
2024-10-30 14:02:03457ブラウズ

How to Reset a Generator Object in Python?

Python でのジェネレータ オブジェクトのリセット:代替案の探索

ジェネレータは、リストを作成せずに一連の値を反復処理する効率的な方法を提供します。メモリ。ただし、ジェネレーターがすべての値を生成すると、ジェネレーターは使い果たされてしまい、直接再利用することはできません。このため、Python でジェネレーター オブジェクトをリセットする方法が疑問になります。

残念ながら、ジェネレーターには組み込みのリセット メソッドがありません。ジェネレーターを再利用するには、いくつかのオプションがあります:

  1. ジェネレーター関数を再度実行する: 最も簡単な方法は、単純にジェネレーター関数を再度実行して、新しいジェネレーター オブジェクトを作成することです。このオプションにより、ジェネレーターが初期状態から開始され、必要な値があれば再計算されます。
  2. ジェネレーターの結果をデータ構造に保存します: あるいは、ジェネレーターの結果をデータ構造に保存することもできます。リストや配列などのデータ構造。これにより、ジェネレーター関数を再実行することなく、値を複数回繰り返すことができます。ただし、このオプションは値のシーケンス全体にメモリを割り当てるため、大規模なジェネレータでは問題になる可能性があります。

各オプションの次のコードの抜粋を検討してください。

オプション1 (ジェネレーター関数を再度実行する):

<code class="python">y = FunctionWithYield()
for x in y: 
    print(x)
y = FunctionWithYield()
for x in y: 
    print(x)</code>

オプション 2 (ジェネレーターの結果をリストに保存する):

<code class="python">y = list(FunctionWithYield())
for x in y: 
    print(x)
# Can iterate again:
for x in y: 
    print(x)</code>

選択肢これらのオプションの間は、プログラムの特定の要件によって異なります。オプション 1 は、小規模なジェネレーターの場合、またはジェネレーター関数の再実行に計算コストがかからない場合に、より効率的です。オプション 2 は、結果をメモリに保存することが可能な大規模なジェネレーターに適しています。

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。