|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159 |
- Chapitre 9 - Tuples
- ====================
-
- Définition
- ------------
-
- Un tuple est un ensemble *ordonné* et *immuable* d'éléments. Le nombre, l'ordre et la valeur des éléments sont fixes.
-
- Création de tuples
- ------------------
-
- Avec des parenthèses::
-
- tuple_vide = ()
- tuple_à_un_élement = (1,) # notez la virgule
- tupble_à_deux_éléments = (1, 2) # on dit aussi: "couple"
-
- Sauf pour le tuple vide, c'est la *virgule* qui fait le tuple
-
- Note: tous les tuples sont truthy, sauf les tuples vides.
-
- Tuples hétérogènes
- -------------------
-
- Comme les listes, les tuples peuvent contenir des éléments de types différents::
-
- # Un entier et une string
- mon_tuple = (42, "bonjour")
-
- # Un entier et un autre tuple
- mon_tuple = (21, (True, "au revoir"))
-
- Accès
- -----
-
- Avec ``[]`` et l'index de l'élément dans le tuple::
-
- mon_tuple = (42, "bonjour")
- print(mon_tuple[0])
- # affiche: 42
-
- print(mon_tuple[1])
- # affiche: "bonjour"
-
- Modification
- ------------
-
- Interdit::
-
- mon_tuple = (42, "bonjour")
- mon_tuple[0] = 44
- # erreur: TypeError: 'tuple' object does not support item assignment
-
-
- Test d'appartenance
- -------------------
-
- Avec ``in``:
-
- mon_tuple = (42, 14)
- print(42 in mon_tuple)
- # affiche: True
-
- print(14 in mon_tuple)
- # affiche: True
-
- print(13 in mon_tuple)
- # affiche: False
-
- Déstructuration
- ----------------
-
- Créer plusieurs variables en une seule ligne::
-
- couple = ("Batman", "Robin")
- héros, side_kick = couple
- print(héros)
- # affiche: Batman
-
- print(side_kick)
- # affiche: Robin
-
-
- Quelques erreurs classiques
- ---------------------------
-
- .. code-block:: python
-
- héros, side_kick, ennemi = couple
- # erreur: ValueError (3 != 2)
-
- (héros,) = couple
- # erreur: ValueError (1 != 2)
-
- # Gare à la virgule:
- héros, = couple
- # erreur: ValueError (1 != 2)
-
- Pièges
- ------
-
- .. code-block::
-
- f(a, b, c) # appelle f() avec trois arguments
-
- f((a, b, c)) # appelle f() avec un seul argument
- # (qui est lui-même un tuple à 3 valeurs)
-
- f(()) # appelle f() avec un tuple vide
-
-
- (a) # juste la valeur de a entre parenthèses
- (a,) # un tuple à un élément, qui vaut la valeur de a
-
- On peut aussi déstructurer des listes::
-
- fruits = ["pomme", "banane", "orange"]
- premier, deuxième, troisième = fruits
-
- print(premier)
- # affiche: pomme
-
- print(deuxième)
- # affiche: banane
-
- print(troisième)
- # affiche: orange
-
- On dit aussi: *unpacking*
-
- Utilisations des tuples
- ------------------------
-
- Pour simplifier des conditions::
-
- # Avant:
- if (
- ma_valeur == "nord" or
- ma_valeur == "sud" or
- ma_valeur == "ouest" or
- ma_valeur == "est"):
- print("direction", ma_valeur)
-
- # Après:
- if ma_valeur in ("nord", "sud", "est", "ouest"):
- print("direction", ma_valeur)
-
- Pour retourner plusieurs valeurs::
-
- def tire_carte():
- valeur = "10"
- couleur = "trèfle"
- return (valeur, couleur)
-
- v, c = tire_carte()
- print(v, "de", c)
- # affiche: 10 de trèfle
-
- Ce n'est pas une nouvelle syntaxe, juste de la manipulation de tuples!
|