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.


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.


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.


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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.