Les tuples sont utilisés pour regrouper les données. Ainsi, un tuple (n-uplet en français) est une collection ordonnée d’objets de types quelconques séparés par des virgules.
Comme une chaîne de caractères, un tuple, une fois créé, est immuable c’est-à-dire non modifiable. Cela signifie que des éléments ne peuvent pas être ajoutés ou supprimés dynamiquement - tous les éléments d'un tuple doivent être définis au moment de sa création.
Syntaxe :
un_tuple = 'a', 'b', 'c', 1, True, 5.7
print(un_tuple)
('a', 'b', 'c', 1, True, 5.7)
Bonnes pratiques : Pour améliorer la lisibilité du code, il est vivement conseillé d’encadrer le tuple par des parenthèses.
Ainsi :
un_tuple = ('a','b','c', 1, True, 5.7)
Remarque :
Un tuple est aussi appelé un enregistrement.
t = ('spam',)
tuple_vide = ()
type(tuple_vide)
tuple
Comme les chaînes de caratères, un tuple est une séquence en Python. Autrement dit, un ensemble fini et ordonné d’objets numérotés de \(0\) à \(n-1\) si le tuple est composé de \(n\) objets.
Ainsi, un tuple peut être parcouru objet par objet. On dit qu’un tuple est un objet itérable.
On considère le tuple ci-après.
un_tuple = (3,'élève', 15.2, False)
Que renvoie les instructions suivantes :
un_tuple[2]
un_tuple[-1]
un_tuple[1:]
un_tuple[:2]
len(un_tuple)
4
(1, 2, 3) + ('a', 'b', 'c')
(1, 2, 3, 'a', 'b', 'c')
False in un_tuple
True
False not in un_tuple
False
dir(tuple)
adn = 'ATGCCGCGAT'
t = tuple(adn)
t
('A', 'T', 'G', 'C', 'C', 'G', 'C', 'G', 'A', 'T')
a, b, c = ('spam', 3, 'guanine')
print(a)
spam
b
3
c
'guanine'
i = 2
j = 5
#On permute i et j
i, j = j, i
print(i)
print(j)
5 2
Comme avec une chaîne de caractères, on utilise l'algorithme du parcours séquentiel.
un_tuple = (3,'élève', 15.2, False)
for elt in un_tuple:
print(elt)
L'autre variante du parcours utilisant les indices
#Parcourir un tuple par les index
for i in range(len(un_tuple)):
print(un_tuple[i])
Cette sous-classe permet de créer un tuple avec des champs nommés ; ce qui rend le code plus lisible et explicite. Ils peuvent être utilisés partout où les n-uplets natifs sont utilisés, et ils ajoutent la possibilité d'accéder à leurs champs grâce à leur nom au lieu de leur index de position.
M = (3, 5)
M[0]
3
from collections import namedtuple
Point = namedtuple("Point", "x y")
M = Point(3, 5)
M
Point(x=3, y=5)
Nous avons maintenant un point avec deux champs nommés de manière appropriée, x et y.
Ce point fournit une représentation sous forme de chaîne conviviale et descriptive (Point(x = 3, y = 5)) par défaut. Il permet d'accéder aux coordonnées en utilisant la notation par points, ce qui est pratique, lisible et explicite.
On peut également utiliser des indices pour accéder à la valeur de chaque coordonnée.
#Un autre exemple
Vecteur = namedtuple("Vecteur", ["x", "y"])
u = Vecteur(-1, 4)
u
Vecteur(x=-1, y=4)
Vecteur = namedtuple("Vecteur", "x, y")
v = Vecteur(-3, -7)
v
Vecteur(x=-3, y=-7)
#Accès par le nom
M.x
3
#Accès par index
M[0]
3
# Accès par la fonction built-in (intégrée) getattr()
getattr(v, 'x')
-3
getattr(v, 'y')
-7
Musicien = namedtuple("Musicien", "nom titres")
Jackson = Musicien("Michael Jackson", ["Billie Jean", "Beat it"])
Jackson
Musicien(nom='Michael Jackson', titres=['Billie Jean', 'Beat it'])
Johnny_halliday = Musicien("Jean-Philippe Smet", ["L'Envie", "Allumer le feu", "Que je t'aime"])
Johnny_halliday
Musicien(nom='Jean-Philippe Smet', titres=["L'Envie", 'Allumer le feu', "Que je t'aime"])