Aller au contenu

T2.2 Tuples⚓︎

Comme les listes, en Python les tuples sont des séquences ordonnées d'éléments (de n'importe quel type).

▶ On les déclare avec des parenthèses:

>>> t1 = (1, 2, 4, 8, 16, 32, 64, 128)
>>> t2 = ("Gon", "Kirua", "Leolio")
>>> type(t1)
<class 'tuple'>

▶ Comme ils sont ordonnés, on peut désigner les éléments du tuple par leur indice, comme une liste. La fonction len est également valable.

>>> t1[2]
4
>>> t2[0]
'Gon'
>>> t1[-1]
128
>>> len(t2)
3

▶ Un tuple est un objet iterable, on peut donc le parcourir:

>>> for nom in t2:
...     print(nom, "est un hunter")
...     
... 
Gon est un hunter
Kirua est un hunter
Leolio est un hunter

Différence entre tuple et liste

Un tuple est un objet non mutable, c'est-à-dire qu'on ne peut pas le modifier : ni réaffecter ses éléments, ni ajouter ou supprimer d'élément.

>>> t = (1, 2, 3)
>>> t[0] = 0
Traceback (most recent call last):
File "<console>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
>>> t.append(4)
Traceback (most recent call last):
File "<console>", line 1, in <module>
AttributeError: 'tuple' object has no attribute 'append'
>>> t.remove(1)
Traceback (most recent call last):
File "<console>", line 1, in <module>
AttributeError: 'tuple' object has no attribute 'remove'    

Utilisation d'un tuple

On se sert d'un tuple pour représenter une séquence de données qui n'a pas vocation à être modifiée au cours du programme, comme par exemple des constantes.

On verra plus tard dans l'année une vertu du caractère non mutable de ce type d'objet.

Fonction renvoyant plusieurs valeurs

Une fonction peut renvoyer plusieurs valeurs, séparées par des virgules.

Le type de la valeur renvoyée sera alors un tuple.

Exemple de fonction renvoyant le maximum d'une liste et son indice
1
2
3
4
5
6
7
def maximum(tab:list) -> tuple:
    maxi = 0
    for i in range(len(tab)): #parcours par indice obligatoire puisqu'on veut récupérer l'indice du maximum
        if tab[i] > maxi:
            maxi = tab[i]
            indice_maxi = i
    return maxi, indice_maxi  #renvoi de plusieurs valeurs, sans forcément de parenthèses
Utilisation dans le shell
1
2
3
4
5
6
>>> liste_exemple = [15, 8, 12, 18, 25, 0, 10]
>>> resultat = maximum(liste_exemple)
>>> resultat
(25, 4)
>>> type(resultat)
<class 'tuple'>