¿Por qué map devuelve un objeto de mapa en lugar de una lista en Python 3?

Estoy interesado en entender elNuevo diseño de lenguaje de Python 3.x.

Disfruto, en Python 2.7, la funciónmap:

Python 2.7.12
In[2]: map(lambda x: x+1, [1,2,3])
Out[2]: [2, 3, 4]

Sin embargo, en Python 3.x las cosas han cambiado:

Python 3.5.1
In[2]: map(lambda x: x+1, [1,2,3])
Out[2]: <map at 0x4218390>

Entiendo el cómo, pero no pude encontrar una referencia al por qué. ¿Por qué los diseñadores de idiomas hicieron esta elección, que, en mi opinión, introduce una gran cantidad de dolor? ¿Fue esto para luchar entre los desarrolladores al apegarse a las listas de comprensiones?

OMI, la lista se puede pensar naturalmente comoFunctores; y de alguna manera se me ha pensado que pensaba de esta manera:

fmap :: (a -> b) -> f a -> f b

Respuestas a la pregunta(4)

Su respuesta a la pregunta