[Python-3000] Using *a for packing in lists and other places

Brett Cannon brett at python.org
Sat Mar 15 18:23:59 CET 2008


On Sat, Mar 15, 2008 at 11:15 AM, Guido van Rossum <guido at python.org> wrote:
> Thomas Wouters suggests some new syntax:
>
>  http://bugs.python.org/issue2292
>
>  >>> a, b, *c = range(5)
>
>  >>> *a, b, c = a, b, *c
>  >>> a, b, c
>  ([0, 1, 2], 3, 4)
>  >>> [ *a, b, c ]
>  [0, 1, 2, 3, 4]
>  >>> L = [ a, (3, 4), {5}, {6: None}, (i for i in range(7, 10)) ]
>  >>> [ *item for item in L ]
>  [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>
>  Also, yielding everything from an iterator:
>
>  >>> def flatten(iterables):
>  ...     for it in iterables:
>  ...         yield *it
>  ...
>  >>> L = [ a, (3, 4), {5}, {6: None}, (i for i in range(7, 10)) ]
>  >>> flatten(L)
>  [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>
>  What do people think?

I am +1 since it is a nice generalization, especially the yield usage.

-Brett


More information about the Python-3000 mailing list