logo

Les tuples

Un tuple est une liste qui ne peut plus être modifiée.

Créer un tuple

Pour créer un tuple , vous pouvez utiliser la syntaxe suivante:

mon_tuple = 1, 2, 3

ou

mon_tuple = (1, 2, 3)

Afficher une valeur d'un tuple

Le tuple est une sorte de liste, on peut donc utiliser la même syntaxe pour lire les données du tuple.

mon_tuple="NSI",2020,True
print(mon_tuple[0])
print(mon_tuple[1])
print(mon_tuple[2])

 

A quoi sert un tuple alors?

  1. Le tuple permet une affectation multiple :
    a,b,c=10,3,4
    print(a)
    print(b)
    print(b+c)

     
  2. Le tuple permet de permuter facilement des éléments :
    a=4
    b=1
    a,b=b,a
    print("a=",a)
    print("b=",b)

     

Somme de tuples

La somme de 2 tuples est un tuple formé des eléments du premier tuple et du second tuple.

Voici un exemple :

a=1,2,3
b=4,5
print(a+b)

 

Parcourir un tuple

Comme pour les listes on peut parcourir les éléments d'un tuple.

Voici un exemple :

mon_tuple="bonjour",1,2,3,"au revoir"
for e in mon_tuple:
	print(e)
print("nb d'elements du tuple :",len(mon_tuple))

 

Repérer un élément dans un tuple et l'instruction in

L'instruction in permet de tester si un élément est dans un tuple et répond par un booléen (True ou False)

On peut aussi utiliser l'instruction not in pour tester qu'un élément n'est pas dans un tuple.

Exemple d'un programme qui test si 0 appartient à un tuple.

nombres=1,2,3,10
print(0 in nombres)
print(0 not in nombres)

 

Les tuples particuliers

Le tuple vide s'écrit juste avec des parenthèses vides :

tuple_vide=()

Le tuple contenant un seul élément s'écrit l'élément suivi d'une virgule :

tuple_un_elt=4,

Tuples et parenthèses

L'utilisation des parenthèses est indispensable pour écrire un tuple dans différents cas.

Par exemples :

Les tuples nommés

Les tuples nommés sont des types d'objets légers et faciles à créer. Les instances de tuple nommées peuvent être référencées en utilisant la synthaxe "orienté objet" ou la syntaxe tuple standard.

Les tuples nommés sont disponibles dans le module (ou bibliothèque) collections qui n'est pas implémenté sur l'émulateur de ce site.

Par exemple, il est commun de représenter un point comme un tuple (x, y) . Cela conduit au code suivant:

pt1 = (1.0, 5.0)
pt2 = (2.5, 1.5)

from math import sqrt
distance = sqrt((pt1[0]-pt2[0])**2 + (pt1[1]-pt2[1])**2)

en utilisant un tuple nommé, il devient plus lisible:

from collections import namedtuple
Point = namedtuple('Point', 'x y')
pt1 = Point(1.0, 5.0)
pt2 = Point(2.5, 1.5)

from math import sqrt
distance = sqrt((pt1.x-pt2.x)**2 + (pt1.y-pt2.y)**2)

Cependant, les tuples nommés sont toujours compatibles à l'envers avec les tuples normaux, de sorte que le code suivant fonctionnera toujours:

from collections import namedtuple
Point = namedtuple('Point', 'x y')
pt1 = Point(1.0, 5.0)
pt2 = Point(2.5, 1.5)

from math import sqrt
# avec la synthaxe tuple
distance = sqrt((pt1[0]-pt2[0])**2 + (pt1[1]-pt2[1])**2)
 # autre usage
x1, y1 = pt1