我在Python 3.6.3中使用map()函数时遇到了以下情况::
>>> a = [12, 23, 13, 14, 15, 36]
>>> b = [34, 45, 35, 32, 34, 34]
>>> c = [34, 67, 89, 98, 98, 78]
>>> map(lambda x,y,z:x+y+z, a,b,c )
<map object at 0x0000017DD976EC88>
>>> e=map(lambda x,y,z:x+y+z, a,b,c )
>>> list(e)
[80, 135, 137, 144, 147, 148]
>>> list(e)
[]
我的问题是为什么我第二次使用list(e)
时无法得到输出。它显示空列表。
有人能帮我吗?
1条答案
按热度按时间uelo1irk1#
因为在Python 3中,map返回一个迭代器,你只能迭代一次。如果你第二次迭代一个迭代器,它会立即引发StopIteration,就像它是空的一样。这就是为什么你第二次调用它时会得到空列表。更多信息请看question
希望这对你有帮助!:)