[Python-ideas] Fwd: unpacking generalisations for list comprehension
Steven D'Aprano
steve at pearwood.info
Thu Oct 13 12:48:48 EDT 2016
On Thu, Oct 13, 2016 at 03:28:27PM +0000, אלעזר wrote:
> It may also suggest that there are currently two ways to understand the
> *[...] construct,
This thread is about allowing sequence unpacking as the internal
expression of list comprehensions:
[ *(expr) for x in iterable ]
It isn't about unpacking lists:
*[...]
so I don't see what relevance your comment has.
There may be two or three or ten or 100 ways to (mis)understand list
comprehensions in Python, but only one of them is the correct way. List
comprehensions are (roughly) syntactic sugar for:
result = []
for x in iterable:
result.append(expression)
Any other understanding of them is incorrect.
Now if people wish to make an argument for changing the meaning of
comprehensions so that the suggested internal unpacking makes sense,
then by all means try making that argument! That's absolutely fine.
In the past, I've tried a similar thing: I argued for a variant list
comprehension that halts early:
[expr for x in iterable while condition]
(as found in at least one other language), but had that knocked back
because it doesn't fit the existing list comprehension semantics. I
wasn't able to convince people that the value of this new comprehension
was worth breaking the existing semantics of comprehensions.
Maybe you will be able to do better than me.
But understand that:
[*(expr) for x in iterable]
also fails to fit the existing list comprehension semantics. To make it
work requires changing the meaning of Python list comps. It isn't enough
to just deny the existing meaning and insist that your own personal
meaning is correct.
--
Steve
More information about the Python-ideas
mailing list