[Python-ideas] __len__() for map()

Chris Angelico rosuav at gmail.com
Mon Nov 26 20:45:02 EST 2018


On Tue, Nov 27, 2018 at 12:37 PM Kale Kundert <kale at thekunderts.net> wrote:
> I guess I probably would have disagreed with the decision to make map() an
> iterator rather than a wrapper around an iterable.  Such a prominent function
> should have an API geared towards usability, not towards implementing a
> low-level protocol (in my opinion).  But clearly that ship has sailed.

For map() returns an iterable that can be used more than once, it has
to be mapping over an iterable that can be used more than once. That
limits it. The way map is currently defined, it can accept any
iterable, and it returns a one-shot iterable (which happens to be its
own iterator). That's why I think the best solution is to create a
separate mapped-sequence-view that depends on its iterable being an
actual sequence, and exposes itself as a sequence also. (Yes, I said
"list" in my previous post, but any sequence would work.) It can carry
the length through, it can directly support subscripting, etc, etc,
etc. Both it and map() would have their places.

ChrisA


More information about the Python-ideas mailing list