python 中的 Map() 只输出一次
Map() in python gives output once only
我在 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)
时无法得到输出。它显示的是空列表。
谁能帮我解决这个问题?
因为在Python 3 中,map returns 一个迭代器,你只能迭代一次。如果您第二次迭代迭代器,它会立即引发 StopIteration,就好像它是空的一样。这就是为什么你第二次调用它时得到空列表的原因。
有关详细信息,请参阅此 question
希望对您有所帮助! :)
我在 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)
时无法得到输出。它显示的是空列表。
谁能帮我解决这个问题?
因为在Python 3 中,map returns 一个迭代器,你只能迭代一次。如果您第二次迭代迭代器,它会立即引发 StopIteration,就好像它是空的一样。这就是为什么你第二次调用它时得到空列表的原因。 有关详细信息,请参阅此 question
希望对您有所帮助! :)