[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