- 此问题在此处已有答案**:
Why can't I iterate twice over the same iterator? How can I "reset" the iterator or reuse the data?(5个答案)
三年前关闭了。
我正在学习Python,在做一些编码练习时,我复制了一行代码,结果出乎意料。
def myfunc(x):
return x*2
myList = [1,2,3,4,5]
newList = map(myfunc, myList)
print('Using myfunc on the original list: ',myList,' results in: ',list(newList))
print('Using myfunc on the original list: ',myList,' results in: ',list(newList))
我本希望看到两次相同的结果,但我得到了这个:
Using myfunc on the original list: [1, 2, 3, 4, 5] results in: [2, 4, 6, 8, 10]
Using myfunc on the original list: [1, 2, 3, 4, 5] results in: []
为什么会出现这种情况,如何避免?
1条答案
按热度按时间qni6mghb1#
newList
不是一个列表,它是一个生成器,可以按需生成数据,当您使用list(newList)
检索到它保存的所有数据后,它就会耗尽。因此,当您再次调用list(newList)
**时,列表中没有更多的数据,因此它保持为空。