python中的Map()只给出一次输出

时间:2018-02-27 05:41:22

标签: python-3.x list object lambda empty-list

当我遇到以下情况时,我正在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 个答案:

答案 0 :(得分:1)

因为在Python 3中, map 返回一个迭代器,你只能迭代一次。如果你第二次遍历迭代器,它会立即引发 StopIteration ,就像它是空的一样。这就是你打电话给第二次空列表的原因。 有关详细信息,请参阅此question

我希望这会对你有所帮助! :)