|
- +++
- title = "Tuples"
- weight = 1
- +++
-
- # 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
-
- ```python
- # Un tuple vide
- ()
-
- # Un tuple à un élément
- (1,) # notez la virgule
-
- # Un tuple à deux éléments, aussi appelé couple
- (1, 2)
- ```
-
- 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:
-
- ```python
- # 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:
-
- ```python
- mon_tuple = (42, "bonjour")
- mon_tuple[0]
- 42
- mon_tuple[1]
- "bonjour"
- ```
-
- ## Modification
-
- Interdit!
-
- ```python
- mon_tuple = (42, "bonjour")
- mon_tuple[0] = 44
- TypeError: 'tuple' object does not support item assignment
- ```
-
-
- ## Test d'appartenance
-
- Avec `in`
-
- ```python
- >>> mon_tuple = (42, 14)
- >>> 42 in mon_tuple
- True
- >>> 14 in mon_tuple
- True
- >>> 13 in mon_tuple
- False
- ```
-
- ## Déstructuration
-
- Créer plusieurs variables en une seule ligne:
-
- ```python
- >>> couple = ("Batman", "Robin")
- >>> héros, side_kick = couple
- >>> héros
- 'Batman'
- >>> side_kick
- 'Robin'
- ```
-
-
- ## Quelques erreurs classiques
-
- ```python
- >>> héros, side_kick, ennemi = couple
- ValueError (3 != 2)
-
- >>> (héros,) = couple
- ValueError (1 != 2)
-
- # Gare à la virgule:
- >>> héros, = couple
- ValueError (1 != 2)
- ```
-
- ## Pièges
-
- ```python
- 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
-
- ```python
- >>> fruits = ["pomme", "banane", "orange"]
- >>> premier, deuxième, troisième = fruits
- >>> premier
- "pomme"
- >>> deuxième
- "banane"
- >>> troisième
- "orange"
- ```
- On dit aussi: unpacking
-
- ## Utilisations des tuples
-
- Pour simplifier des conditions:
-
- ```python
- # Avant
- if (
- ma_valeur == "nord" or
- ma_valeur == "sud" or
- ma_valeur == "ouest" or
- ma_valeur == "est"):
- print("direction", ma_valeur)
- ```
-
-
- ```python
- # Après
- if ma_valeur in ("nord", "sud", "est", "ouest"):
- print("direction", ma_valeur)
- ```
-
- ## Pour retourner plusieurs valeurs
-
- ```python
- def tire_carte():
- valeur = "10"
- couleur = "trèfle"
- return (valeur, couleur)
-
- v, c = tire_carte()
- print(v, "de", c)
- # 10 de trèfle
- ```
-
- Ce n'est pas une nouvelle syntaxe, juste de la manipulation de tuples!
|