【发布时间】:2020-03-24 07:54:29
【问题描述】:
是否可以在 Python 的 while 循环中使用生成器或迭代器?例如,类似:
i = iter(range(10))
while next(i):
# your code
这样做的目的是在 while 循环语句中构建迭代,使其类似于 for 循环,不同之处在于您现在可以在 while 语句中添加逻辑:
i = iter(range(10))
while next(i) and {some other logic}:
# your code
然后它变成了一个很好的 for 循环/while 循环混合。
有人知道怎么做吗?
【问题讨论】:
-
必须是一个while循环吗?
for x in i将是自然的方式。 -
我猜你不会在
it = itertools.count(); while next(it):上尝试你的想法 -
你能提供更多关于你的用例的上下文吗?
-
您将如何访问 iter 返回的值,因为您不存储它,您只需获取项目并评估其布尔结果,那么您将在循环中做什么,因为您无权访问从返回的项目迭代器?
-
如果我们想保持一般性怎么办,这就是为什么我没有指出具体的附加逻辑。这里的停止因素可以假设为超过最后一次迭代到迭代器抛出异常的地方。 @RomanPerekhrest
标签: python python-3.x while-loop iterator generator