- 此问题在此处已有答案**:
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)
输出:[]
为什么会这样呢?
1条答案
按热度按时间kqlmhetl1#
map对象是一个生成器。
涉及到迭代器的迭代。迭代器现在已经完成。当你再次尝试时,没有数据返回,所以你有一个空列表。如果你以某种方式重置迭代器,你可以得到预期的结果。
这就像阅读整个文件,然后想知道为什么下一个
read
循环没有返回任何东西:你在最后。