Obtenir une valeur à partir d'un tuple

153

Existe-t-il un moyen d'obtenir une valeur à partir d'un tuple en Python à l'aide d'expressions?

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

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

Je sais que je peux le faire:

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

Mais cela ajouterait quelques dizaines de lignes à ma fonction, doublant sa longueur.

BCS
la source
1
Le _n'est également qu'une variable. Il est juste souvent utilisé pour lui attribuer une valeur qui peut être ignorée. Mais théoriquement, vous pouvez obtenir la valeur de_
Écran d'information

Réponses:

203

Tu peux écrire

i = 5 + tup()[0]

Les tuples peuvent être indexés comme des listes.

La principale différence entre les tuples et les listes est que les tuples sont immuables - vous ne pouvez pas définir les éléments d'un tuple sur des valeurs différentes, ni ajouter ou supprimer des éléments comme vous le pouvez dans une liste. Mais à part cela, dans la plupart des situations, ils fonctionnent à peu près de la même manière.

David Z
la source
54

Pour quiconque cherche à l'avenir une réponse, je voudrais donner une réponse beaucoup plus claire à la 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[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()

J'espère que cela éclaircit davantage les choses pour ceux qui en ont besoin.

AbdulMueed
la source
1
Merci pour la mise à jour. Par souci d'exhaustivité, vous souhaiterez peut-être ajouter l'utilisation du trait de soulignement comme espace réservé «factice» lors du déballage de tuple.
Emile