当我在Python中使用list()将一个map对象转换为list对象,并再次将list()应用于这个列表时,为什么列表会变为空?[duplicate]

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

Why can't I iterate twice over the same iterator? How can I "reset" the iterator or reuse the data?(5个答案)
两年前关闭了。
请遵循以下代码:

def addition(n): 
    return n + n

numbers = (1, 2, 3, 4) 
result = map(addition, numbers) 
print(list(result))

输出:[2、4、6、8]
现在,当我再次对result应用list()时,它已经变成了一个列表,结果却为空。

list(result)

输出:[]
为什么会这样呢?

kqlmhetl

kqlmhetl1#

map对象是一个生成器。

list(result)

涉及到迭代器的迭代。迭代器现在已经完成。当你再次尝试时,没有数据返回,所以你有一个空列表。如果你以某种方式重置迭代器,你可以得到预期的结果。
这就像阅读整个文件,然后想知道为什么下一个read循环没有返回任何东西:你在最后。

相关问题