Is there a way to get one value from a tuple in Python using expressions?
def tup(): return (3, "hello") i = 5 + tup() # I want to add just the three
I know I can do this:
(j, _) = tup() i = 5 + j
But that would add a few dozen lines to my function, doubling its length.
You can write
i = 5 + tup()
Tuples can be indexed just like lists.
The main difference between tuples and lists is that tuples are immutable – you can’t set the elements of a tuple to different values, or add or remove elements like you can from a list. But other than that, in most situations, they work pretty much the same.
For anyone in the future looking for an answer, I would like to give a much clearer answer to the question.
# for making a tuple my_tuple = (89, 32) my_tuple_with_more_values = (1, 2, 3, 4, 5, 6) # to concatenate tuples another_tuple = my_tuple + my_tuple_with_more_values print(another_tuple) # (89, 32, 1, 2, 3, 4, 5, 6) # getting a value from a tuple is similar to a list first_val = my_tuple second_val = my_tuple # if you have a function called my_tuple_fun that returns a tuple, # you might want to do this my_tuple_fun() my_tuple_fun() # or this v1, v2 = my_tuple_fun()
Hope this clears things up further for those that need it.
Single elements of a tuple
a can be accessed -in an indexed array-like fashion-
a, … depending on the number of elements in the tuple.
If your tuple is
def tup(): return (3, "hello")
tup() returns a 2-tuple.
In order to "solve"
i = 5 + tup() # I want to add just the three
you select the 3 by:
tup() # first element
so all together:
i = 5 + tup()
namedtuple that allows you to access tuple elements by name (and by index). Details are at https://docs.python.org/3/library/collections.html#collections.namedtuple
>>> import collections >>> MyTuple=collections.namedtuple("MyTuple", "mynumber, mystring") >>> m = MyTuple(3, "hello") >>> m 3 >>> m.mynumber 3 >>> m 'hello' >>> m.mystring 'hello'