我有一个python脚本,我在其中执行以下操作:
iterator = product(*izip(repeat(0,len(myList)),myList))
我使用python命令行,然后执行execfile('myScript.py')
。代码运行后,我尝试以下操作:
>>> iterator
<itertools.product object at 0x182f06370>
>>> list(iterator)
[]
但是,如果我在生成print list(iterator)
后立即在脚本iterator
中放置了一个print语句,则代码会正确打印列表中的元素。
文件执行完成后,为什么元素会消失?这是正常行为吗?
答案 0 :(得分:1)
来自python docs:
Iterator是表示数据流的对象。反复拨打电话 iterator的next()方法返回流中的连续项。什么时候 没有更多数据可用于引发StopIteration异常 代替。此时,迭代器对象已耗尽 进一步调用next()方法再次提升StopIteration。