ホームページ >バックエンド開発 >Python チュートリアル >Pythonでジェネレーターが空かどうかを確認する方法は?

Pythonでジェネレーターが空かどうかを確認する方法は?

Barbara Streisand
Barbara Streisandオリジナル
2024-10-20 12:33:30399ブラウズ

How to Check if a Generator is Empty in 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 サイトの他の関連記事を参照してください。

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