Believemy logo purple

Les listes en Python

Une liste en Python est une variable qui permet de stocker plusieurs éléments.
Believemy logo

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).

PYTHON
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 : [].

PYTHON
nombres = [1, 2, 3, 4]

C'est également possible de créer une liste depuis un autre type (cast).

PYTHON
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 :

PYTHON
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.

PYTHON
print(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.

PYTHON
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 :

  1. append() - ajouter un élément à la fin ;
  2. insert() - ajouter un élément à une position précise ;
  3. extend() - ajouter plusieurs éléments.

Méthode #1 - append()

PYTHON
nombres = [1, 2, 3]
nombres.append(4)
# [1, 2, 3, 4]

 

Méthode #2 - insert()

PYTHON
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.

PYTHON
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 :

  1. del - supprime un élément grâce à son index ;
  2. remove() - supprime la première occurence d'une valeur ;
  3. pop() - supprime et retourne le dernier.

Méthode #1 - del

PYTHON
del nombres[1]

 

Méthode #2 - remove()

PYTHON
nombres.remove(3)

 

Méthode #3 - pop()

PYTHON
dernier = nombres.pop()  # Supprime et retourne le dernier

 

Vider une liste

Il est possible de vider une liste avec la méthode clear() :

PYTHON
nombres.clear()

 

Parcourir une liste

La méthode la plus simple pour parcourir une liste est la boucle for :

PYTHON
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() :

PYTHON
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

PYTHON
[nouvel_element for element in iterable]

 

Exemples

Doubler chaque nombre

PYTHON
nombres = [1, 2, 3]
doubles = [x * 2 for x in nombres]

 

Garder uniquement les pairs

PYTHON
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.

PYTHON
"chat" in animaux  # True
"tigre" in animaux  # False

 

Trouver l'index d'un élément

PYTHON
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().

PYTHON
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 :

  1. en modifiant l’original (avec sort()) ;
  2. ou en retournant une nouvelle liste triée (avec sorted()).

Trier en modifiant la liste originale avec sort()

PYTHON
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()

PYTHON
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é :

PYTHON
notes = [15, 10, 20]
nouvelles_notes = sorted(notes, reverse=True)

Enfin, sorted() accepte un paramètre key pour trier selon une règle personnalisée, comme la longueur des chaînes ou une fonction lambda.

 

Renverser une liste

PYTHON
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 :

  1. Le slicing avec l'opérateur [:] ;
  2. Et une méthode dédiée avec copy().

Méthode #1 : slicing ([:])

PYTHON
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()

PYTHON
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 :

PYTHON
liste = [[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() :

PYTHON
import 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éthodeDescription
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 :

PYTHON
matrice = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
]

Enfin, pour accéder à un élément spécifique :

PYTHON
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.

PYTHON
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.

Découvrez notre glossaire Python

Parcourez les termes et définitions les plus couramment utilisés dans le domaine du développement avec Python.