当我在 Python 中使用 list() 将地图对象转换为列表对象,并再次将 list() 应用于

请按照此代码操作:


def addition(n): 

    return n + n


numbers = (1, 2, 3, 4) 

result = map(addition, numbers) 

print(list(result))

输出:[2,4,6,8]


现在,当我再次对已经成为列表的结果应用 list() 时,结果结果为空。


list(result)

输出: []


为什么会这样呢?


婷婷同学_
浏览 134回答 1
1回答

函数式编程

地图对象是一个生成器。list(result)涉及到迭代器的迭代。迭代器现已完成。当您重试时,没有数据可返回,因此您有一个空列表。如果以某种方式重置迭代器,就可以获得预期的结果。这就像读取整个文件,然后想知道为什么下一个read循环不返回任何内容:你已经到了最后。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python