「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > Python でジェネレーター オブジェクトをリセットするには?

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

2024 年 11 月 9 日に公開
ブラウズ:975

How to Reset a Generator Object in Python?

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

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

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

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

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

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

y = FunctionWithYield()
for x in y: 
    print(x)
y = FunctionWithYield()
for x in y: 
    print(x)

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

y = list(FunctionWithYield())
for x in y: 
    print(x)
# Can iterate again:
for x in y: 
    print(x)

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

最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3