Note: PEP 798 – Unpacking in Comprehensions has landed (see what's new in Python 3.15), so it was eventually decided the syntax for unpacking in comprehensions was acceptable. The original question asking what the perceived ambiguity was remains below for historical reference.
PEP 448 -- Additional Unpacking Generalizations allowed:
>>> LOL = [[1, 2], ['three']]
>>> [*LOL[0], *LOL[1]]
[1, 2, 'three']
Alright! Goodbye itertools.chain. Never liked you much anyway.
>>> [*L for L in LOL]
File "", line 1
[*L for L in LOL]
^
SyntaxError: iterable unpacking cannot be used in comprehension
Oh. Why can't we have nice things?
Unfortunately there are syntax errors for all of them:
[*l for l in lists] # for l in lists: result.extend(l)
{*s for s in sets} # for s in sets: result.update(s)
{**d for d in dicts} # for d in dicts: result.update(d)
(*g for g in gens) # for g in gens: yield from g
Unpacking in a comprehension seems to be obvious and Pythonic, and there's a quite natural extension from shorthand "for-loop & append" to "for-loop & extend".
But since they've bothered to add that special error message, there was presumably a reason for disabling it. So, what's the problem with that syntax?