Python 映射输出列表将破坏映射结果

Python 映射输出列表将破坏映射结果,python,list,iterator,map-function,Python,List,Iterator,Map Function,我尝试了以下代码: squared = (map(lambda x: x**2, items)) print(list(squared)) print(list(squared)) 首先,它打印平方数列表,再次打印相同的东西打印空列表。我想知道这背后的原因是什么。map返回一个迭代器,该迭代器只能按照以下方式迭代一次:。正如其他人所提到的,您创建的迭代器只能使用一次,因此保存结果并重复使用这是一种方法 items = [0,1,2,3,4,5,6,7,8,9] squared = (map(

我尝试了以下代码:

squared = (map(lambda x: x**2, items))
print(list(squared))
print(list(squared))

首先,它打印平方数列表,再次打印相同的东西打印空列表。我想知道这背后的原因是什么。

map
返回一个迭代器,该迭代器只能按照以下方式迭代一次:。

正如其他人所提到的,您创建的迭代器只能使用一次,因此保存结果并重复使用这是一种方法

items = [0,1,2,3,4,5,6,7,8,9]

squared = (map(lambda x: x**2, items))
abc = list(squared)
print(abc)
print(abc)
print(abc)
print(abc)

作为旁注,你应该像我刚才所说的那样,在你的问题中对
项目
有一个定义。这将允许我们复制粘贴您的整个代码,并快速查看发生了什么,而不是出现错误。

在Python3中,map返回一个迭代器,您只能迭代一次。若您第二次迭代一个迭代器,它将立即引发Stop Iteration,就像它是空的一样。max消耗整个内容,而min将迭代器视为空。如果需要多次使用元素,则需要调用list来获取列表而不是迭代器。

在Python 3.x中,
map()
生成迭代器而不是列表。在该迭代器上迭代一次后(例如
list()
所做的事情,从中生成一个实际的列表),它是空的-进一步的迭代将不会产生任何值。如果要多次使用变量,请将
列表(映射(…)
指定给该变量。可能重复