ComparaisonComparaisons

list vs tuple

list est une séquence modifiable, tandis que tuple est une séquence immuable qui peut servir de clé de dictionnaire ou d’élément d’un ensemble.

Sur cette page

Comparaison point par point

#
  • Syntaxe

    list()
    Crochets []
    tuple()
    Parenthèses (), à un élément : (x,)
  • Peut être modifié après création

  • Clé de dictionnaire ou élément d’un ensemble

    list()
    Non, TypeError: unhashable type
  • Méthodes de modification (append, sort, …)

    tuple()
    Aucune
  • Consommation mémoire et vitesse de création

    list()
    Plus élevées
    tuple()
    Plus faibles
  • Usage typique

    list()
    Liste de tâches, résultats ajoutés dans une boucle
    tuple()
    Coordonnées, ligne de données, plusieurs valeurs d’un return

Exemple

#
Python
tasks = ["HTML", "CSS"]
tasks.append("JavaScript")

point = (3, 4)

print(tasks)
print(point)

try:
    point[0] = 10
except TypeError as error:
    print(error)
Résultatrésultat enregistré, vous pouvez le vérifier
['HTML', 'CSS', 'JavaScript']
(3, 4)
'tuple' object does not support item assignment

Définition et utilisation

#

Les deux collections conservent les éléments dans un ordre fixe et prennent en charge les mêmes opérations de lecture : l’indexation, les tranches, len(), in, la boucle for et le déballage. Les éléments de chacune peuvent avoir des types différents.

Ce qui les distingue, c’est la mutabilité. Vous créez une liste avec des crochets et pouvez la modifier avec les méthodes append(), remove(), sort() et d’autres. Vous créez un tuple avec des parenthèses (un tuple à un seul élément exige une virgule : (x,)), et une fois créé, il ne peut plus être modifié : ni ajouter, ni supprimer, ni remplacer un élément. Grâce à cette immuabilité, un tuple peut être une clé de dictionnaire ou un élément d’un ensemble, ce qu’une liste ne peut pas faire.

Quand les données doivent changer pendant l’exécution du programme, par exemple une liste de tâches ou des résultats ajoutés dans une boucle, choisissez list. Quand les données sont par nature fixes, par exemple les coordonnées d’un point, une ligne de base de données ou le résultat d’une fonction qui renvoie plusieurs valeurs à la fois, choisissez tuple. L’immuabilité sert aussi de documentation : un tuple indique que ces données ne changeront pas.

Syntaxe

#
Syntaxe
my_list = [1, 2, 3]
my_tuple = (1, 2, 3)

Plus d’exemples

#
Un tuple comme clé de dictionnaire
Python
distances = {}
distances[(0, 0)] = 0
distances[(1, 2)] = 5

print(distances)

try:
    distances[[1, 2]] = 5
except TypeError as error:
    print(type(error).__name__)
Résultatrésultat enregistré, vous pouvez le vérifier
{(0, 0): 0, (1, 2): 5}
TypeError

Une liste n’a pas de hash, elle ne peut donc pas être une clé. Le contenu du message d’erreur dépend de la version de Python, mais le type TypeError est toujours le même.

Le déballage fonctionne de la même façon pour les deux
Python
list_values = ["Léa", 7]
tuple_values = ("Lucas", 3)

name1, level1 = list_values
name2, level2 = tuple_values

print(name1, level1)
print(name2, level2)
Résultatrésultat enregistré, vous pouvez le vérifier
Léa 7
Lucas 3

Bonnes pratiques

#
  • Une fonction qui renvoie plusieurs valeurs (return a, b) crée un tuple. Vous le déballez de la même façon qu’une liste.
  • Les fonctions list() et tuple() servent à convertir de l’un à l’autre.
  • Si une liste ne doit jamais changer, un tuple est aussi un signal pour les autres développeurs que les données sont fixes.

Entrées associées

#

Vous voyez une erreur ou il manque un exemple ? Écrivez-nous.