3.3. Présentation des tuples
Un tuple (n-uplet) est une liste
non-mutable. Un fois créé, un tuple ne peut en aucune manière être
modifié.
Exemple 3.15. Définition d'un tuple
>>> t = ("a", "b", "mpilgrim", "z", "example")
>>> t
('a', 'b', 'mpilgrim', 'z', 'example')
>>> t[0]
'a'
>>> t[-1]
'example'
>>> t[1:3]
('b', 'mpilgrim')
|
Un tuple est défini de la même manière qu'une liste sauf que
l'ensemble d'éléments est entouré de parenthèses plutôt que de
crochets.
|
|
Les éléments d'un tuple ont un ordre défini, tout comme ceux
d'une liste. Les indices de tuples débutent à zéro, tout comme
ceux d'une liste, le premier élément d'un tuple non vide est
toujours t[0].
|
|
Les indices négatifs comptent à partir du dernier élément du
tuple, tout comme pour une liste.
|
|
Le découpage fonctionne aussi, tout comme pour une liste.
Notez que lorsque vous découpez une liste, vous obtenez une
nouvelle liste, lorsque vous découpez un tuple, vous obtenez un
nouveau tuple.
|
Exemple 3.16. Les tuples n'ont pas de méthodes
>>> t
('a', 'b', 'mpilgrim', 'z', 'example')
>>> t.append("new")
Traceback (innermost last):
File "<interactive input>", line 1, in ?
AttributeError: 'tuple' object has no attribute 'append'
>>> t.remove("z")
Traceback (innermost last):
File "<interactive input>", line 1, in ?
AttributeError: 'tuple' object has no attribute 'remove'
>>> t.index("example")
Traceback (innermost last):
File "<interactive input>", line 1, in ?
AttributeError: 'tuple' object has no attribute 'index'
>>> "z" in t
True
|
Vous ne pouvez pas ajouter d'élément à un tuple. Les tuples
n'ont pas de méthodes append ou
extend.
|
|
Vous ne pouvez pas enlever d'éléments d'un tuple. Les tuples
n'ont pas de méthodes remove ou
pop.
|
|
Vous ne pouvez pas rechercher d'éléments dans un tuple. Les
tuples n'ont pas de méthode index.
|
|
Vous pouvez toutefois utiliser in pour
vérifier l'existence d'un élément dans un tuple.
|
Mais à quoi servent donc les tuples ?
- Les tuples sont plus rapides que les listes. Si vous
définissez un ensemble constant de valeurs et que tout ce que vous
allez faire est le parcourir, utilisez un tuple au lieu d'une
liste.
- Votre code est plus sûr si vous «protégez en écriture» les données qui n'ont pas besoin d'être modifiées. Utiliser un tuple à la place d'une liste revient à avoir une assertion
implicite que les données sont constantes et que des mesures spécifiques sont nécéssaires pour modifier cette définition.
- Vous vous souvenez que j'avais dit que que les clés de dictionnaire
pouvaient être des entiers, des chaînes et «quelques autres
types» ? Les tuples sont un de ces types. Ils peuvent être
utilisé comme clé dans un dictionnaire, ce qui n'est pas le cas des
listes. En fait, c'est plus compliqué que ça. Les clés de
dictionnaire doivent être non-mutables. Les tuples sont
non-mutables mais si vous avez un tuple contenant des listes, il
est considéré comme mutable et n'est pas utilisable comme clé de
dictionnaire. Seuls les tuples de chaînes, de nombres ou
d'autres tuples utilisable comme clé peuvent être utilisés comme
clé de dictionnaire.
- Les tuples sont utilisés pour le formatage de chaînes, comme
nous le verrons bientôt.
|
Les tuples peuvent être convertis en listes et vice-versa. La
fonction prédéfinie tuple prends une liste et
retourne un tuple contenant les mêmes éléments et la fonction
list prends un tuple et retourne une liste. En
fait, tuple gèle une liste et
list dégèle un tuple.
|
Pour en savoir plus sur les tuples