On Sat, Jan 09, 2021 at 10:20:27AM +1100, Steven D'Aprano wrote:

> If I replace the list with itertools.chain, I should still get exactly 
> the same results, and I do.

I spoke too soon, I don't. You cannot compose reversed() with chain().

(I don't often make definitive statements without testing them first, 
but when I do, I'm invariably wrong.)

(Ram, I guess you had probably already discovered that reversed and 
chain can't be composed. It would have been nice for you to have 
mention this fact in your proposal, rather than expect every single of 
your readers to rediscover it for themselves.)

So in principle we could make the requested change.

However it would still be surprising. I think most people would expect 
that if we could compose reversed and chain, the result would be closest 
to this:

    iterables = (a, b, c)  # for example
    reversed(list(chain(*iterables)))

rather than your proposal:

    iterables = (a, b, c)
    rev_iters = tuple(map(reversed, iterables))
    reversed(list(*rev_iters))

or equivalent. Your proposal would still have the surprising 
consequences that reversing a chain that includes a string would 
surprisingly split the string into a sequence of characters in reverse 
order.


-- 
Steve
_______________________________________________
Python-ideas mailing list -- python-ideas@python.org
To unsubscribe send an email to python-ideas-le...@python.org
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at 
https://mail.python.org/archives/list/python-ideas@python.org/message/DUWCPAQEZ3YA4N52EHF6DJXDWLLVVP23/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to