为什么在 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 尚未被遍历。
然而,当调用 print(list(g)) 时,它会将迭代器 g 遍历一次,并将其转换成一个列表。这意味着当 i 循环开始执行时,迭代器 g 已经没有元素可供迭代了。这就是 print(i) 无法执行的原因,因为它找不到它正在寻找的元素。
总之,只有当 print(list(g)) 被调用时,print(i) 才会失败,因为这会消耗掉迭代器 g 中的所有元素,导致 i 循环没有元素可供迭代。
以上就是为什么在 Python 代码中,`print(list(g))` 后无法再执行 `print(i)`?的详细内容,更多请关注其它相关文章!