Programmation Python/Tuples

Un livre de Wikilivres.

Description d'un tuple[modifier | modifier le wikicode]

Vous devez vous rappeler une autre différence importante entre chaînes et listes : il n'est pas possible de changer les caractères au sein d'une chaîne existante, alors que vous pouvez modifier les éléments d'une liste. En d'autres termes, les listes sont des séquences modifiables, alors que les chaînes sont des séquences non-modifiables. Exemple :

>>> liste =['jambon','fromage','miel','confiture','chocolat']
>>> liste[1:3] =['salade']
>>> print liste
['jambon', 'salade', 'confiture', 'chocolat']
>>> chaine ='Roméo préfère Juliette'
>>> chaine[14:] ='Brigitte'
          ***** ==> Erreur: object doesn't support slice assignment  *****

Nous essayons de modifier la fin de la chaîne, mais cela ne marche pas. La seule possibilité d'arriver à nos fins est de créer une nouvelle chaîne et d'y recopier ce que nous voulons changer :

>>> chaine = chaine[:14] +'Brigitte'
>>> print chaine
Roméo préfère Brigitte

Python propose un type de données appelé tuple (anglicisme informatique signifiant "Table UPLEt"), qui est assez semblable à une liste mais qui n'est pas modifiable. Les tuples sont donc préférables aux listes partout où l'on veut être certain que les données transmises ne soient pas modifiées par erreur au sein d'un programme. En outre, les tuples sont moins « gourmands » en ressources système (ils occupent moins de place en mémoire).

Du point de vue de la syntaxe, un tuple est une collection d'éléments séparés par des virgules :

>>> tuple = 'a', 'b', 'c', 'd', 'e'
>>> print(tuple)
('a', 'b', 'c', 'd', 'e')

Pour améliorer la lisibilité du code, il est vivement conseillé de déclarer le tuple en évidence en l'enfermant dans une paire de parenthèses, comme l'instruction "print" de Python le fait elle-même.

>>> tuple = ('a', 'b', 'c', 'd', 'e')

Les opérations que l'on peut effectuer sur des tuples sont syntaxiquement similaires à celles que l'on effectue sur les listes, si ce n'est que les tuples ne sont pas modifiables :

>>> print(tuple[2:4])
('c', 'd')

>>> tuple[1:3] = ('x', 'y')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment

>>> tuple = ('André',) + tuple[1:]	
>>> print(tuple)
('André', 'b', 'c', 'd', 'e')

Remarquez qu'il faut toujours au moins une virgule pour définir un tuple (le dernier exemple ci-dessus utilise un tuple contenant un seul élément : 'André').