PEP 448 – разрешены дополнительные распаковочные обобщения:
Код: Выделить всё
>>> LOL = [[1, 2], ['three']]
>>> [*LOL[0], *LOL[1]]
[1, 2, 'three']
Код: Выделить всё
>>> [*L for L in LOL]
File "", line 1
[*L for L in LOL]
^
SyntaxError: iterable unpacking cannot be used in comprehension
К сожалению, во всех них есть синтаксические ошибки:
Код: Выделить всё
[*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
Но поскольку они удосужились добавить это специальное сообщение об ошибке, предположительно, была причина его отключения. Так в чем же проблема с этим синтаксисом?