[Python-ideas] Fwd: Fwd: unpacking generalisations for list comprehension

Random832 random832 at fastmail.com
Sat Oct 15 04:12:12 EDT 2016


On Fri, Oct 14, 2016, at 22:38, Steven D'Aprano wrote:
> On Thu, Oct 13, 2016 at 05:30:49PM -0400, Random832 wrote:
> 
> > Frankly, I don't see why the pattern isn't obvious
> 
> *shrug*
> 
> Maybe your inability to look past your assumptions and see things from 
> other people's perspective is just as much a blind spot as our inability 
> to see why you think the pattern is obvious. We're *all* having 
> difficulty in seeing things from the other side's perspective here.
> 
> Let me put it this way: as far as I am concerned, sequence unpacking is 
> equivalent to manually replacing the sequence with its items:

And as far as I am concerned, comprehensions are equivalent to manually
creating a sequence/dict/set consisting of repeating the body of the
comprehension to the left of "for" with the iteration variable[s]
replaced in turn with each actual value.

>     t = (1, 2, 3)
>     [100, 200, *t, 300]
> 
> is equivalent to replacing "*t" with "1, 2, 3", which gives us:
> 
>     [100, 200, 1, 2, 3, 300]

I don't understand why it's not _just as simple_ to say:

t = ('abc', 'def', 'ghi')
[*x for x in t]

is equivalent to replacing "x" in "*x" with, each in turn, 'abc', 'def',
and 'ghi', which gives us:

[*'abc', *'def', *'ghi']

just like [f(x) for x in t] would give you [f('abc'), f('def'),
f('ghi')]

> That's nice, simple, it makes sense, and it works in sufficiently recent 
> Python versions.

That last bit is not an argument - every new feature works in
sufficiently recent python versions. The only difference for this
proposal (provided it is approved) is that the sufficiently recent
python versions simply don't exist yet.


More information about the Python-ideas mailing list