ホームページ >バックエンド開発 >Python チュートリアル >Pythonでジェネレーターが空かどうかを確認する方法は?
空のジェネレーターの初期化の検出
Python では、ジェネレーターは一度に 1 つずつ値を生成するイテレーターです。そのため、ジェネレーターが最初から空であるかどうかを判断するのは困難な場合があります。リストやタプルとは異なり、ジェネレーターには固有の長さや isEmpty メソッドがありません。
課題への対処
これに対処するための一般的なアプローチの 1 つは、ヘルパー関数を使用して、ジェネレーター内の最初の値を消費せずにピークします。 Peak 関数が None を返す場合、ジェネレータに項目がないことを示します。
推奨される実装
そのような関数の 1 つである Peak は、次のように実装できます。
<code class="python">def peek(iterable): try: first = next(iterable) except StopIteration: return None return first, itertools.chain([first], iterable)</code>
ピークを使用して空のジェネレーターを判断する
ジェネレーターが空かどうかを判断するには、次の方法でピーク関数を使用できます。
<code class="python">res = peek(mysequence) if res is None: # sequence is empty. Do stuff. else: first, mysequence = res # Do something with first, maybe? # Then iterate over the sequence: for element in mysequence: # etc.</code>
この例では、ジェネレーターが空の場合、ピーク関数は None を返し、if 条件は true になります。それ以外の場合は、else ブロックが実行されます。このアプローチを利用すると、ジェネレーターが最初から空かどうかを効果的に検出できます。
以上がPythonでジェネレーターが空かどうかを確認する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。