Python 3中的意外行为:打印后列表内容消失[重复]

ezykj2lf  于 2023-01-08  发布在  Python
关注(0)|答案(1)|浏览(134)
    • 此问题在此处已有答案**:

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:  []

为什么会出现这种情况,如何避免?

qni6mghb

qni6mghb1#

newList不是一个列表,它是一个生成器,可以按需生成数据,当您使用list(newList)检索到它保存的所有数据后,它就会耗尽。因此,当您再次调用list(newList)**时,列表中没有更多的数据,因此它保持为空。

相关问题