- 此问题在此处已有答案**:
Why can't I iterate twice over the same iterator? How can I "reset" the iterator or reuse the data?(6个答案)
12个月前关闭。
有人能解释一下为什么第4条print语句返回一个空列表吗?
x=[1]
y=[2]
z=zip(x,y)
print(z)
print(list(z))
print(z)
print(list(z))
print(list(zip(x,y)))
<zip object at 0x0000023F9382B688>
[(1, 2)]
<zip object at 0x0000023F9382B688>
[]
[(1, 2)]
1条答案
按热度按时间nzk0hqpo1#
编辑:前面的答案是“generator”而不是“iterator”,但是@juanpa.arrivillaga正确地指出了
zip
对象实际上是一个迭代器(从用户的Angular 看,它的工作原理基本上是一样的,但是没有相同的开销)z
是一个迭代器,你在print(list(z))
中第一次使用它会耗尽它。你应该在第四个print语句之前重复z=zip(x,y)
。注意,你在第三个print语句中仍然看到它是一个<zip object>
,因为它只是一个耗尽的zip对象。第一次使用它不会耗尽它。试试这个: