如何解决Python交互模式:不使用返回值调用next不推进迭代器
如果我执行,
a = iter([1,2,3])
for x in a:
print(x)
if x==1:
z=next(a)
我明白
1
3
这是我所期望的,因为对 next
的调用会推进迭代器并跳过 2
。
但是在交互模式(命令行)中,如果我删除 z=
赋值,并且只调用 next
,它的行为会大不相同。
>>> a = iter([1,3])
>>> for x in a:
... print(x)
... if x==1:
... next(a)
给我
1
2
3
我在 Windows 64 位中使用 Python 3.8.8。这是预期的吗?它仅在交互模式下发生。
解决方法
解释器回显 next()
的返回值,以及每次迭代打印的 x
。
>>> a = iter([1,2,3])
>>> for x in a:
... print(x)
... if x==1:
... next(a)
所以 1 和 3 是 print(x)
的输出,2 是 next()
的返回值。如果您分配 z=next()
的输出,事情会按预期工作 1,3
因为您的 z 没有返回或打印。将“next(a)”的结果分配给变量会禁止打印其结果,以便仅打印“x”循环变量的替代值
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。