/句のelse
ブロックは、反復が終了しても によって中断されない場合に実行されるので、を読みました。for
else
break
for
ループが反復を開始しなかった場合にのみ実行される何かを記述できる言語構造はありますか? tuple
またはを使用していた場合list
、次のようにします。
if seq:
for x in seq:
# something
else:
# something else
しかし、ジェネレーターを使用すると、必要な動作が得られません。
>>> g = (x for x in range(2))
>>> for x in g:
... print x
... else:
... print "done"
...
0
1
done # I don't want "done" here
>>> g = (x for x in range(2) if x > 1)
>>> if g:
... for x in g:
... print x
... else:
... print "done"
...
>>> # I was expecting "done" here
ループを使用しながら、ジェネレーターからatuple
または aを作成し尽くすことなくこれを行うにはどうすればよいですか? ループで使用してをキャッチしようとすることもできますが、 でそれを行う良い方法があるかどうかを確認したいと思います。list
for
next()
while
StopIteration
for