[Python-ideas] Fwd: unpacking generalisations for list comprehension
Sven R. Kunze
srkunze at mail.de
Wed Oct 12 12:32:12 EDT 2016
On 12.10.2016 17:41, Nick Coghlan wrote:
> This particular proposal fails on the first question (as too many
> people would expect it to mean the same thing as either "[*expr, for
> expr in iterable]" or "[*(expr for expr in iterable)]")
So, my reasoning would tell me: where have I seen * so far? *args and
**kwargs! [...] is just the list constructor. So, putting those two
pieces together is quite simple. I expect that Martti's reasoning was
similar.
Furthermore, your two "interpretations" would yield the very same result
as [expr for expr in iterable] which doesn't match with my experience
with Python so far; especially when it comes to special characters. They
must mean something. So, a simple "no-op" would not match my expectations.
> but it fails on the other two grounds as well.
Here I disagree with you. We use *args all the time, so we know what *
does. I don't understand why this should not work in between brackets [...].
Well, it works in between [...] sometimes but not always, to be precise.
And that's the problem, I guess.
> In most uses of *-unpacking it's adding entries to a comma-delimited
> sequence, or consuming entries in a comma delimited sequence (the
> commas are optional in some cases, but they're still part of the
> relevant contexts). The expansions removed the special casing of
> functions, and made these capabilities generally available to all
> sequence definition operations.
I don't know what you mean by comma-delimited sequence. There are no
commas. It's just a list of entries. * adds entries to this list. (At
least from my point of view.)
> Comprehensions ... [are] inspired by mathematical set builder notation.
Exactly. Inspired. I don't see any reason not to extend on this idea to
make it more useful.
> "itertools.chain.from_iterable(subiter for subiter in iterable)".
I have to admit that need to read that twice to get what it does. But
that might just be me.
Cheers,
Sven
More information about the Python-ideas
mailing list