multiple assignment
Christoph Zwerschke
cito at online.de
Wed Mar 22 04:45:45 EST 2006
Anand schrieb:
> Suppose i have a big list and i want to take tke the first one and rest
> of the list like car/cdr in lisp.
> is there any easy way to do this in python?
>
> Only way i know is
>
> a = range(10)
> x, y = a[0], a[1:]
You have so many higher-level ways to access and iterate through lists
in Python, that you normally just don't need to do things like that.
Also, in the frequent case where y=a, you can just write x = a.pop(0).
> Why can't python support something like this:
>
> x, *y = a
>
> This is not really a new concept to python, infact when calling a
> function which takes variable arguments, it is used in a similar way.
You're right, that would not be so far off.
But then, the following should be also supported:
*x, y = a # x, y = a[:-1], y = a[-1]
x, *y, z = a # x, y, z = a[0], a[1:-1], a[-1]
Of course, there can be only one variable with an asterisk.
(But note that in the situation of a function taking parameters, that
variable must always be the last.)
But I don't know if this is really useful enough...
-- Christoph
More information about the Python-list
mailing list