Obtendo um valor de uma tupla

152

Existe uma maneira de obter um valor de uma tupla no Python usando expressões?

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

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

Eu sei que posso fazer isso:

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

Mas isso adicionaria algumas dezenas de linhas à minha função, dobrando seu comprimento.

BCS
fonte
1
O _também é apenas uma variável. É frequentemente usado para atribuir valor a ele que pode ser descartado. Mas, teoricamente, você pode obter o valor de_
Info-Tela

Respostas:

202

Você pode escrever

i = 5 + tup()[0]

As tuplas podem ser indexadas como as listas.

A principal diferença entre tuplas e listas é que elas são imutáveis ​​- você não pode definir os elementos de uma tupla com valores diferentes ou adicionar ou remover elementos de uma lista. Mas, fora isso, na maioria das situações, eles funcionam da mesma forma.

David Z
fonte
54

Para quem procura uma resposta no futuro, gostaria de dar uma resposta muito mais clara à pergunta.

# 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 isso esclareça as coisas ainda mais para aqueles que precisam.

AbdulMueed
fonte
1
Obrigado pela atualização. Para garantir a integridade, você pode adicionar o uso do sublinhado como espaço reservado 'fictício' na descompactação da tupla.
Emile