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.
Comparaison point par point
#Syntaxe
Peut être modifié après création
Clé de dictionnaire ou élément d’un ensemble
Méthodes de modification (append, sort, …)
Consommation mémoire et vitesse de création
Usage typique
Exemple
#tasks = ["HTML", "CSS"]
tasks.append("JavaScript")
point = (3, 4)
print(tasks)
print(point)
try:
point[0] = 10
except TypeError as error:
print(error)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
#my_list = [1, 2, 3]
my_tuple = (1, 2, 3)Plus d’exemples
#distances = {}
distances[(0, 0)] = 0
distances[(1, 2)] = 5
print(distances)
try:
distances[[1, 2]] = 5
except TypeError as error:
print(type(error).__name__)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.
list_values = ["Léa", 7]
tuple_values = ("Lucas", 3)
name1, level1 = list_values
name2, level2 = tuple_values
print(name1, level1)
print(name2, level2)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()ettuple()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
#- list()Crée une liste, vide ou à partir des éléments d’un autre objet itérable.
- tuple()Crée un tuple : une séquence immuable d’éléments.
- Déballage de séquencesAffectation des éléments d’un tuple ou d’une liste à plusieurs variables à la fois.
- dict()Crée un dictionnaire à partir de paires clé-valeur ou d’arguments nommés.
Vous voyez une erreur ou il manque un exemple ? Écrivez-nous.