Obteniendo un valor de una tupla

152

¿Hay alguna manera de obtener un valor de una tupla en Python usando expresiones?

def tup():
  return (3, "hello")

i = 5 + tup()  # I want to add just the three

Sé que puedo hacerlo:

(j, _) = tup()
i = 5 + j

Pero eso agregaría unas pocas docenas de líneas a mi función, duplicando su longitud.

BCS
fuente
1
El _también es solo una variable. A menudo se usa para asignarle un valor que se puede descartar. Pero, en teoría, puede obtener el valor de_
Info-Screen

Respuestas:

202

Puedes escribir

i = 5 + tup()[0]

Las tuplas se pueden indexar al igual que las listas.

La principal diferencia entre las tuplas y las listas es que las tuplas son inmutables: no puede establecer los elementos de una tupla en valores diferentes, ni agregar o eliminar elementos como puede de una lista. Pero aparte de eso, en la mayoría de las situaciones, funcionan prácticamente igual.

David Z
fuente
54

Para cualquier persona en el futuro que busque una respuesta, me gustaría dar una respuesta mucho más clara a la pregunta.

# 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[0]
second_val = my_tuple[1]

# if you have a function called my_tuple_fun that returns a tuple,
# you might want to do this
my_tuple_fun()[0]
my_tuple_fun()[1]

# or this
v1, v2 = my_tuple_fun()

Espero que esto aclare aún más las cosas para aquellos que lo necesitan.

AbdulMueed
fuente
1
Gracias por la actualización. Para completar, es posible que desee agregar el uso del guión bajo como marcador de posición 'ficticio' en el desempaquetado de tuplas.
Emile