Sep*_*cle 6 python python-2.x python-3.x
我是一名Python新手,正在阅读一本旧的Python书。它基于Python 2,因此有时我对细节不甚了解。
有一个代码
L=map(lambda x:2**x, range(7))
Run Code Online (Sandbox Code Playgroud)
因此它不会在python 3中返回列表,因此我用google搜索并发现list(L
)有效。但是问题是,首先list(L)
可以正常工作,但是当我再次使用它时,
list(L)
list(L)
Run Code Online (Sandbox Code Playgroud)
第二回 [ ]
有人可以解释我发生了什么事吗?
map
返回一个迭代器。因此,其输出只能使用一次。如果您希望以与Python 2.x相同的方式将结果存储在列表中,则在list
使用时只需调用即可map
:
L = list(map(lambda x:2**x, range(7)))
Run Code Online (Sandbox Code Playgroud)
L
现在,无论您调用多少次,列表都会包含您的结果。
您面临的问题是,一旦map
迭代一次,它将在以后的每次调用中都不产生任何结果。因此,您将看到第二个呼叫的空列表。
如果您不能耗尽迭代器但希望使用两次,有关变通方法的更详细的解释和建议,请参阅为什么我不能对相同的数据进行两次迭代。
归档时间: |
|
查看次数: |
2553 次 |
最近记录: |