python - Python 生成器和 yield - 在 while 循环中递增到 next() 调用
问题描述
在下面的代码片段中,您将如何使用运算符而不是键入四次来增加next()
调用?在循环中,只有第一个实例会重复打印。每次迭代如何推进到下一个?+=
print(next(seq))
while
print(next(seq))
def get_sequence_upto(x):
for i in range(x):
yield i
seq = get_sequence_upto(5)
print(next(seq))
print(next(seq))
print(next(seq))
print(next(seq))
输出:
0
1
2
3
编辑:添加了 while 循环片段
while True:
seq = loop_here(x)
print(next(seq))
我尝试将 += 添加到代码中的不同点,但没有成功。
解决方案
您可以使用如下的 for 循环:
def get_sequence_upto(x):
for i in range(x):
yield i
seq = get_sequence_upto(5)
while seq:
try:
print(next(seq))
except:
break
推荐阅读
- xcode - Xcode 控制台是黑色的
- android - 如何在颤动中获取当前路线名称?
- django - 如何实现多个过滤器?
- python - 在二叉搜索树中查找父节点
- haskell - 如何使用类型同义词重载运算符?
- ios - 重定向 URL 回调在 SFSafariviewcontroller 中不起作用
- javascript - 从 php 发送多个 SKU 和数量以进行条带化
- django - 一对多关系,如何将数据添加到一对多关系字段?
- pandas - pandas 在同一张表(相同的数据框)中,如何用新名称和其他行值的总和对不同的行进行分组
- r - Tensorflow 的嵌入问题:dimnames(x) <- dn 中的错误:“dimnames”[1] 的长度不等于数组范围