跳转到主内容
极星编程网:以代码为星,赴技术山海!

为什么在 Python 代码中,`print(list(g))` 后无法再执行 `print(i)`?

去掉 print(list(g)) 后才能执行 print(i) 的原因 在给出的 python 代码中,定义了以下两个函数:
def y(list): for i in list: yield i def exec(g): print(list(g)) # 1 for i in g: # 2 print(i)
同时,还创建了一个元组 t,然后将 t 传递给 y 函数,并将结果赋值给迭代器 g。最后,调用 exec 函数,传入 g 作为参数。 当不调用 print(list(g)) 时,i 循环将正常执行,并打印元组 t 中的元素。这是因为迭代器 g 尚未被遍历。 Python 3.14.3 微软官方的 Python 扩展,是 VS Code 安装量最高的扩展(209M+)。集成 IntelliSense(通过 Pylance)、调试(通过 Python Debugger)、代码检查、格式化、重构和单元测试等功能。支持 Jupyter Notebook、虚拟环境管理和多 Python 版本切换。 下载 立即学习 “ Python免费学习笔记(深入) ”; 然而,当调用 print(list(g)) 时,它会将迭代器 g 遍历一次,并将其转换成一个列表。这意味着当 i 循环开始执行时,迭代器 g 已经没有元素可供迭代了。这就是 print(i) 无法执行的原因,因为它找不到它正在寻找的元素。 总之,只有当 print(list(g)) 被调用时,print(i) 才会失败,因为这会消耗掉迭代器 g 中的所有元素,导致 i 循环没有元素可供迭代。

相关文章