On 15.10.2016 16:47, Martti Kühne wrote:
[var for expression in iterable for var in expression]
you are right, though. List comprehensions are already stackable.

Good catch, Paul. Comprehensions appear to be a special case when it comes to unpacking as they provide an alternative path. So, nested comprehensions seem to unintuitive to those who actually favor the *-variant. ;) Anyway, I don't think that it's a strong argument against the proposal. ~10 other ways are available to do what * does and this kind of argument did not prevent PEP448.

What's more (and which I think is a more important response to the nested comprehension alternative) is that nested comprehensions are rarely used, and usually get long quite easily. To be practical here, let's look at an example I remembered this morning (taken from real-world code I needed to work with lately):

return [(language, text) for language, text in fulltext_tuples]

That's the minimum comprehension. So, you need to make it longer already to do **actual** work like filtering or mapping (otherwise, just return fulltext_tuples). So, we go even longer (and/or less readable):

return [t for t in tuple for tuple in fulltext_tuples if tuple[0] == 'english'] return chain.from_iterable((language, text) for language, text in fulltext_tuples if language == 'english'])

I still think the * variant would have its benefits here:

return [*(language, text) for language, text in fulltext_tuples if language == 'english']

(Why it should be unpacked, you wonder? It's because of executemany of psycopg2.]

Python-ideas mailing list
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to