1. ホーム
  2. python

[解決済み] イテレータが少なくとも1つの要素を生成しているかどうかをチェックするためのワンライナー?

2022-08-25 16:18:47

質問

現在、こんなことをやっています。

try:
    something = iterator.next()
    # ...
except StopIteration:
    # ...

しかし、私は単純な if ステートメント内に置くことができる式が欲しいのです。 このコードをより無骨に見せる内蔵のものはないでしょうか?

any() 戻り値 False を返しますが、イテレートが空でない場合はすべての項目を反復処理する可能性があります。 私は最初の項目をチェックするために、それを必要とするだけです。


私が何をしようとしているのか尋ねる人がいます。 私は SQL クエリを実行し、その結果を返す関数を書きました。 この関数を呼び出すとき、クエリが何かを返したかどうかを知り、それに基づいて決定を下すだけでよい場合があります。

どのように解決するのですか?

any はTrueの場合、最初の要素から先には進みません。もしイテレータが偽っぽいものを返した場合は、次のように書くことができます。 any(True for _ in iterator) .