在
是否有一种语言结构可以让我编写仅在
我该如何在使用
for
/else
子句中,如果迭代完成但未被break
中断,则执行else
块,所以我阅读了。是否有一种语言结构可以让我编写仅在
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
我该如何在使用
for
循环的情况下,避免从生成器中创建一个tuple
或list
,同时完成操作而不会过度消耗资源?我可以在while
循环中使用next()
并尝试捕获StopIteration
,但我想知道是否有更好的方法可以使用for
实现。
ran
标志,并使用if not ran:
。 - user2357112