如果迭代完成但没有被 中断,则/子句中的else
块将被执行,因此我阅读了.for
else
break
有没有一种语言结构可以让我写一些只有在for
循环没有开始迭代时才执行的东西?如果我使用tuple
or 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
。