else
block 在 for
/else
如果迭代完成但未被 break
中断,则执行子句, so I read .
有没有一种语言结构可以让我写一些只有在 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
如何在不耗尽创建 tuple
的情况下执行此操作?或 list
来自生成器,同时还使用 for
环形?我可以使用 next()
在while
循环并 try catch StopIteration
, 但我想看看是否有一个很好的方法来使用 for
.
最佳答案
n = -1
for n, i in enumerate(it):
do_stuff()
if n < 0:
print 'Done'
关于Python 仅在 for 循环未开始迭代(使用生成器)时才执行代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18112036/