Ignore part of a python tuple
Question:
If I have a tuple such as (1,2,3,4)
and I want to assign 1 and 3 to variables a and b I could obviously say
myTuple = (1,2,3,4)
a = myTuple[0]
b = myTuple[2]
Or something like
(a,_,b,_) = myTuple
Is there a way I could unpack the values, but ignore one or more of them of them?
Answers:
I personally would write:
a, _, b = myTuple
This is a pretty common idiom, so it’s widely understood. I find the syntax crystal clear.
Your solution is fine in my opinion. If you really have a problem with assigning _ then you could define a list of indexes and do:
a = (1, 2, 3, 4, 5)
idxs = [0, 3, 4]
a1, b1, c1 = (a[i] for i in idxs)
Note that you can slice the source tuple, like this instead:
a,b = some_tuple[0:2]
you can use *_ to capture an unknown number of elements e.g.
first, *_, one_before_last, _ = 1,2,3,4,5,6,7,8,9
gives:
first = 1
one_before_last = 8
If I have a tuple such as (1,2,3,4)
and I want to assign 1 and 3 to variables a and b I could obviously say
myTuple = (1,2,3,4)
a = myTuple[0]
b = myTuple[2]
Or something like
(a,_,b,_) = myTuple
Is there a way I could unpack the values, but ignore one or more of them of them?
I personally would write:
a, _, b = myTuple
This is a pretty common idiom, so it’s widely understood. I find the syntax crystal clear.
Your solution is fine in my opinion. If you really have a problem with assigning _ then you could define a list of indexes and do:
a = (1, 2, 3, 4, 5)
idxs = [0, 3, 4]
a1, b1, c1 = (a[i] for i in idxs)
Note that you can slice the source tuple, like this instead:
a,b = some_tuple[0:2]
you can use *_ to capture an unknown number of elements e.g.
first, *_, one_before_last, _ = 1,2,3,4,5,6,7,8,9
gives:
first = 1
one_before_last = 8