Les listes en Python
En Python, les listes sont l’un des types de données les plus fondamentaux et les plus polyvalents. Elles permettent de stocker des séquences ordonnées de valeurs, qu’on peut facilement parcourir, modifier, trier, filtrer, etc.
Une liste est donc une collection ordonnée, modifiable, et indexable.
Contrairement à un
tuple
, une liste peut être modifiée après sa création.
Qu'est-ce qu'une liste en Python ?
Une liste est une séquence de valeurs ordonnées (chaque élément a une position) et mutables (on peut modifier les éléments existants, en ajouter ou en retirer).
fruits = ["pomme", "banane", "kiwi"]
Dans cet exemple :
"pomme"
est à l’index 0 ;"banane"
est à l’index 1 ;"kiwi"
est à l’index 2.
Les index en Python commencent à 0, pas à 1. 😉
Créer une liste
Pour créer une liste, il suffit d'utiliser un couple de crochets : []
.
nombres = [1, 2, 3, 4]
C'est également possible de créer une liste depuis un autre type (cast).
texte = "bonjour"
lettres = list(texte) # ['b', 'o', 'n', 'j', 'o', 'u', 'r']
Bien que cela puisse sembler assez étrange, c'est quelque chose que nous utilisons très souvent avec des boucles !
Accéder aux éléments d'une liste
Pour accéder aux éléments d'une liste, nous utilisons les indices :
fruits = ["pomme", "banane", "kiwi"]
print(fruits[0]) # pomme
print(fruits[-1]) # kiwi (index négatif : à partir de la fin)
Quand nous tentons d'accéder à un indice qui n'existe pas, une erreur est provoquée.
PYTHONprint(fruits[3]) # ❌ IndexError: la liste n’a que 3 éléments (0 à 2)
Modifier une liste
Les listes en Python sont mutables, ce qui signifie que l’on peut modifier leurs éléments directement.
couleurs = ["rouge", "bleu", "vert"]
couleurs[1] = "jaune"
print(couleurs) # ['rouge', 'jaune', 'vert']
Cette flexibilité est un grand avantage des listes, mais elle impose d’être prudent lors des partages ou des copies.
Ajouter ou insérer des éléments
Python offre trois méthodes pour enrichir une liste :
append()
- ajouter un élément à la fin ;insert()
- ajouter un élément à une position précise ;extend()
- ajouter plusieurs éléments.
Méthode #1 - append()
nombres = [1, 2, 3]
nombres.append(4)
# [1, 2, 3, 4]
Méthode #2 - insert()
nombres = [1, 2, 3]
nombres.insert(1, 10) # Insère 10 à l’index 1
# [1, 10, 2, 3]
Méthode #3 - extend()
Cette méthode sert aussi pour fusionner des listes.
nombres = [1, 2, 3]
nombres.extend([5, 6])
# [1, 2, 3, 5, 6]
Supprimer des éléments d'une liste
Tout comme pour ajouter des éléments à une liste, il existe trois méthodes différentes pour supprimer des éléments :
del
- supprime un élément grâce à son index ;remove()
- supprime la première occurence d'une valeur ;pop()
- supprime et retourne le dernier.
Méthode #1 - del
del nombres[1]
Méthode #2 - remove()
nombres.remove(3)
Méthode #3 - pop()
dernier = nombres.pop() # Supprime et retourne le dernier
Vider une liste
Il est possible de vider une liste avec la méthode clear()
:
nombres.clear()
Parcourir une liste
La méthode la plus simple pour parcourir une liste est la boucle for
:
animaux = ["chat", "chien", "lapin"]
for animal in animaux:
print(animal)
C'est aussi possible d'accéder à l'index et à la valeur d'un élément d'une liste grâce à enumerate()
:
for i, animal in enumerate(animaux):
print(f"{i} → {animal}")
Les compréhensions de liste
Une comprehension de liste (list comprehension 🇺🇸) est une manière concise et élégante de créer une nouvelle liste à partir d’une autre, souvent combinée avec une transformation ou une condition. Elle est semblabe à une compréhension de dictionnaire.
Elles sont souvent plus rapides et plus lisibles que les boucles classiques pour les transformations simples.
Syntaxe
[nouvel_element for element in iterable]
Exemples
Doubler chaque nombre
nombres = [1, 2, 3]
doubles = [x * 2 for x in nombres]
Garder uniquement les pairs
pairs = [x for x in nombres if x % 2 == 0]
Rechercher dans une liste
Tester si une valeur est présente
Nous pouvons chercher si une valeur est présente dans une liste en Python grâce au mot-clé in
.
"chat" in animaux # True
"tigre" in animaux # False
Trouver l'index d'un élément
index = animaux.index("chien") # 1
Cette méthode est spéciale : elle lève une erreur (
ValueError
) quand l'élément n'existe pas.
Compter les occurences
Pour compter les occurences dans une liste, il suffit d'utiliser la méthode count()
.
animaux.count("chat") # 1
Trier et renverser une liste
Trier une liste
Le tri d’une liste permet de réorganiser ses éléments selon un ordre précis : croissant, décroissant, ou selon une clé personnalisée (longueur, ordre alphabétique, etc.).
Il existe deux façons principales de trier une liste :
- en modifiant l’original (avec
sort()
) ; - ou en retournant une nouvelle liste triée (avec
sorted()
).
Trier en modifiant la liste originale avec sort()
notes = [15, 10, 20]
notes.sort()
print(notes) # [10, 15, 20]
Cette méthode modifie directement la liste d’origine. Si vous avez besoin de garder la liste originale intacte, évitez
sort()
.
Trier sans modifier la liste originale avec sorted()
notes = [15, 10, 20]
nouvelles_notes = sorted(notes)
Ici, sorted()
crée une nouvelle liste triée sans toucher à la liste d’origine.
C'est aussi possible de spécifier reverse=True pour faire un tri inversé :
PYTHONnotes = [15, 10, 20] nouvelles_notes = sorted(notes, reverse=True)
Enfin,
sorted()
accepte un paramètrekey
pour trier selon une règle personnalisée, comme la longueur des chaînes ou une fonction lambda.
Renverser une liste
notes = [15, 10, 20]
notes.reverse()
Contrairement à un tri, cette méthode n’organise pas les valeurs. Elle inverse simplement l’ordre des éléments dans la liste actuelle, sans créer de copie. 🥸
Copier une liste
Les listes étant mutables, il est essentiel de bien maîtriser la copie.
Copier une liste ne doit pas simplement copier la référence, mais bien dupliquer son contenu pour éviter des effets de bord.
Pour ce faire, nous avons deux méthodes :
- Le slicing avec l'opérateur
[:]
; - Et une méthode dédiée avec
copy()
.
Méthode #1 : slicing ([:])
copie = notes[:]
Cette méthode crée une copie superficielle de la liste : les éléments sont dupliqués, mais les objets imbriqués restent liés (modifier la copie modifie aussi la liste originale).
Méthode #2 : copy()
copie = notes.copy()
Fonctionne comme le slicing, mais de manière plus explicite. Elle est également recommandée pour sa lisibilité. 😊
Les deux méthodes ci-dessus ne fonctionnent pas pour les listes de listes :
PYTHONliste = [[1], [2]] copie = liste.copy() copie[0][0] = 99 print(liste) # [[99], [2]]
Comme on peut le voir, modifier un sous-élément modifie aussi l’original. Pourquoi ? Parce que seule la référence à la sous-liste est copiée. 😉
Il vaut donc mieux privilégier une copie profonde avec
copy.deepcopy()
:PYTHONimport copy copie_totale = copy.deepcopy(liste)
Cette méthode recopie récursivement toute la structure, garantissant une indépendance totale.
Méthodes utiles pour les listes
Python fournit une riche palette de méthodes pour ajouter, retirer, trier, compter ou rechercher des éléments dans une liste.
Voici un petit tableau récapitulatif que chaque développeur Python devrait garder en tête :
Méthode | Description |
append(x) | Ajoute un élément à la fin |
insert(i, x) | Insère un élément x à l'index i |
extend(liste) | Ajoute plusieurs éléments / fusionne une autre liste |
remove(x) | Supprime la première occurence de x |
pop() | Supprime et retourne le dernier élément |
clear() | Vide la liste |
index(x) | Donne l'index de la première occurence de x |
count(x) | Compte le nombre d'occurences de x |
sort() | Trie la liste |
Les listes imbriquées
Une liste imbriquée (ou liste de listes) est une structure où chaque élément peut lui-même être une liste.
Cela permet de représenter des tableaux multidimensionnels ou des structures complexes, comme des matrices ou des tableaux de données.
Voici un petit exemple :
matrice = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
Enfin, pour accéder à un élément spécifique :
print(matrice[1][2]) # 6
Chaque index accède à un niveau.
matrice[1]
renvoie la ligne[4, 5, 6]
, et[1][2]
cible la 3ᵉ valeur de cette ligne.
Les listes imbriquées sont très puissantes mais peuvent rapidement devenir difficiles à lire. Pensez à bien les formater et à utiliser des boucles imbriquées pour les parcourir proprement. 😬
Questions fréquentes sur les listes
Faisons un point sur les questions les plus fréquentes lorsqu'on parle des listes en Python.
Que fait
list()
exactement ?
Elle convertit n’importe quel itérable en liste : chaînes, tuples, range(), etc.
list("abc") # ['a', 'b', 'c']
Peut-on trier une liste de chaînes ?
Oui, les chaînes sont triées par ordre alphabétique avec la méthode sort()
que nous avons vu.
Puis-je me former seul à Python ?
Bien entendu avec une bonne formation sur Python est possible ! Découvrez notre formation ici.