Unpack the first two elements in list/tuple
PythonUnpackPython Problem Overview
Is there a way in Python to do like this:
a, b, = 1, 3, 4, 5
and then:
>>> a
1
>>> b
3
The above code doesn't work as it will throw
> ValueError: too many values to unpack
Python Solutions
Solution 1 - Python
Just to add to Nolen's answer, in Python 3, you can also unpack the rest, like this:
>>> a, b, *rest = 1, 2, 3, 4, 5, 6, 7
>>> a
1
>>> rest
[3, 4, 5, 6, 7]
Unfortunately, this does not work in Python 2 though.
Solution 2 - Python
There is no way to do it with the literals that you've shown. But you can slice to get the effect you want:
a, b = [1, 3, 4, 5, 6][:2]
To get the first two values of a list:
a, b = my_list[:2]
Solution 3 - Python
On Python 3 you can do the following:
>>> a, b, *_ = 1, 3, 4, 5
>>> a
1
>>> b
3
_
is just a place holder for values you don't need
Solution 4 - Python
You could use _
to represent variables you wanted to "throw away"
>>> a, b, _ = 1, 3, 4
>>> a
1
>>> b
3
Solution 5 - Python
Or in Python 3.x you could do this:
a, *b = 1, 3, 4
giving you:
In [15]: a
Out[15]: 1
In [16]: b
Out[16]: [3, 4]
It would avoid the exception, though you would have to parse b
. This assume that you only want to have two variables on the left of the =
, otherwise you could use
a, b, *ignore = ....
with v3.x