我最近读到mapPython 3 中的一个好处是它很懒.这意味着,做得更好
map(lambda x: x**2, range(10**100))
Run Code Online (Sandbox Code Playgroud)
而不是
[x**2 for x in range(10**100)]
Run Code Online (Sandbox Code Playgroud)
我很好奇的是,我如何能够使用这种懒惰.如果我生成地图对象,我怎么能访问结果操作/列表中的特定元素.在几乎每一个文档,map我所看到的,他们会做这样的事情print(map(...))或for i in map(...)其中(据我所知)放弃懒概念,因为它隐含映射到一个列表转换.
我想我正在寻找的是能够以类似的懒惰方式使用地图对象,就像range我可以做的那样,懒散x = range(10**100)地生成x[10000]而没有巨大的计算负荷.
如果这个概念不存在,那么map懒惰的好处是什么?如果你总是需要把它转换成一个非懒惰的对象,比如列表,为什么map懒惰呢?