为什么map在Python 3中返回地图对象而不是列表?
问题内容:
我对了解Python 3.x的新语言设计感兴趣。
我在Python 2.7中确实喜欢这个函数map
:
Python 2.7.12
In[2]: map(lambda x: x+1, [1,2,3])
Out[2]: [2, 3, 4]
但是,在Python 3.x中,情况发生了变化:
Python 3.5.1
In[2]: map(lambda x: x+1, [1,2,3])
Out[2]: <map at 0x4218390>
我了解操作方法,但是找不到原因。语言设计师为什么要做出这种选择,我认为这会带来很多痛苦。这是否会困扰开发人员坚持列出理解?
IMO,列表自然可以认为是函子;有人以某种方式想到了我:
fmap :: (a -> b) -> f a -> f b
问题答案:
我想,为什么地图仍然存在的原因 都
当发电机表情也是存在的,是它可以采取多个迭代论点,都环绕在并传递给函数:
>>> list(map(min, [1,2,3,4], [0,10,0,10]))
[0,2,0,4]
这比使用zip稍微容易一些:
>>> list(min(x, y) for x, y in zip([1,2,3,4], [0,10,0,10]))
否则,它根本不会在生成器表达式上添加任何内容。