Apprenez en lisant dans l'ordre

Comment utiliser les listes Python (list)

Apprends à manipuler les listes en Python pour stocker plusieurs valeurs et les transformer avec les méthodes essentielles.

Créer une liste

Avec une liste (list), tu peux regrouper plusieurs valeurs au même endroit. Contrairement à int ou str, où une variable contient une seule valeur, une liste peut aligner autant de valeurs que tu veux côte à côte.

Pour en déclarer une, entoure les valeurs de [ et ], séparées par des virgules.

Le contenu d'une liste et ses indices
102030400123

Comme pour les chaînes, tu accèdes aux éléments par un indice commençant à 0. [0] te donne le premier, et [-1] te donne le dernier.

Une caractéristique clé des listes : tu peux modifier les valeurs après coup.

# Déclaration d'une liste
numbers = [10, 20, 30, 40]

# Liste vide (à remplir plus tard)
empty = []

# Accès
print(numbers[0])     # 10
print(numbers[-1])    # 40

# Écrasement
numbers[1] = 99
print(numbers)        # [10, 99, 30, 40]

# Mélanger les types, c'est permis
mixed = [1, "apple", 3.14, True]
print(mixed[1])       # apple

Listes imbriquées (listes dans une liste)

Tu peux aussi placer des listes dans une liste, comme [[1, 2], [3, 4]]. Pour extraire une valeur, tu enchaînes deux indices comme dans data[1][0]. C'est pratique pour des données en forme de tableau, mais une simple liste plate suffit largement au début.

Travaillons avec une liste de courses de fruits.

① Crée fruits = ["apple", "banana", "grape", "lemon"], puis affiche avec print() le premier et le dernier élément.

② Remplace fruits[1] par "orange" et affiche la liste complète avec print().

Éditeur Python

Exécuter le code pour voir le résultat

Le slicing

Les listes utilisent la même syntaxe de slice que les chaînes. [début:fin] renvoie une sous-liste, [::pas] parcourt la liste par sauts, et [-n:] récupère les n derniers éléments.

Le résultat d'un slice est une liste.

Comment fonctionne le slicing
[1,2,3,4,5][:3][1, 2, 3]3 premiers[1,2,3,4,5][-2:][4, 5]2 dernierssliceextraitsliceextrait

[:3] prend les 3 premiers (intervalle semi-ouvert, sans inclure la fin), et [-2:] prend les 2 derniers.

Cela fonctionne exactement comme le slicing des chaînes.

nums = [1, 2, 3, 4, 5]

print(nums[:3])    # [1, 2, 3]
print(nums[2:])    # [3, 4, 5]
print(nums[-2:])   # [4, 5]
print(nums[::2])   # [1, 3, 5] (un sur deux)

# La liste d'origine ne change pas (une nouvelle liste est renvoyée)
print(nums)        # [1, 2, 3, 4, 5]

On te donne scores = [72, 85, 91, 68, 77, 95].

① Utilise un slice pour extraire les 3 premiers ([72, 85, 91]) et affiche-les.

② Utilise un slice pour extraire les 2 derniers ([77, 95]) et affiche-les.

Éditeur Python

Exécuter le code pour voir le résultat

Ajouter et supprimer des éléments

Les listes disposent d'une foule de méthodes pour ajouter ou supprimer des éléments. Ces méthodes modifient la liste elle-même. Autrement dit, appeler list.append(...) modifie list sur place.

MéthodeRôle
append(x)Ajouter un élément à la fin
extend(iterable)Ajouter tous les éléments d'une autre liste à la fin
insert(i, x)Insérer x à la position i
remove(x)Parcourir depuis la gauche et supprimer la première occurrence de x
pop(i)Supprimer l'élément à la position i et le renvoyer (par défaut le dernier)
clear()Vider entièrement la liste
append vs extend
[1, 2, 3].append([4, 5])[1,2,3,[4,5]]imbriqué[1, 2, 3].extend([4, 5])[1,2,3,4,5]aplatiappelrésultatappelrésultat

append ajoute « un seul élément ».

extend « déplie et ajoute » chaque élément.

Même en passant le même [4, 5], le résultat diffère.

box = [1, 2, 3]

# Ajout
box.append("apple")       # ajoute un élément à la fin
print(box)                # [1, 2, 3, 'apple']

box.extend(["banana", "grape"])  # déplie et ajoute à la fin
print(box)                # [1, 2, 3, 'apple', 'banana', 'grape']

box.insert(1, "NEW")      # insère à l'indice 1
print(box)                # [1, 'NEW', 2, 3, 'apple', 'banana', 'grape']

# Suppression
box.remove("apple")       # supprime la première occurrence par valeur
print(box)                # [1, 'NEW', 2, 3, 'banana', 'grape']

v = box.pop(0)            # retire l'indice 0 et le renvoie
print(v)                  # 1
print(box)                # ['NEW', 2, 3, 'banana', 'grape']

remove / pop sur un élément absent → erreur

remove(x) lève ValueError si x n'est pas dans la liste, et pop(i) lève IndexError si i est hors limites. Un pattern sûr consiste à vérifier la présence avant avec if x in box: avant de supprimer.

Éditons une liste de tâches (To-Do).

Tu pars de todo = ["courses", "sport"].

① Utilise append pour ajouter "lecture" à la fin.

② Utilise extend pour ajouter ["marche", "étude"] à la fin d'un coup.

③ Utilise insert pour placer "petit-déj" au début.

④ Utilise remove pour supprimer "sport", puis affiche la liste finale avec print().

Éditeur Python

Exécuter le code pour voir le résultat

Trier et rechercher (sort / reverse / count / index)

Les listes possèdent aussi des méthodes de tri et de recherche. Le point important ici, c'est qu'il existe deux types de méthodes.

- Les méthodes qui modifient la liste (sort / reverse) → ne capture pas de valeur de retour ; la liste elle-même change

- Les méthodes qui renvoient une valeur (count / index) → utilise la valeur de retour, comme dans print(list.count(...))

Modifie vs renvoie
sort()reverse()list.sort()(aucun retour)la listechangecount()index()n = list.count(x)capturele résultatusageeffet de bordusageretour

sort / reverse : modifient la liste directement. Ne capture pas.

count / index : ne touchent pas à la liste — elles renvoient une valeur. Capture-la et utilise-la.

fruits = ["banana", "lemon", "apple", "grape"]

# (1) Méthodes modifiantes : la liste change juste en les appelant
fruits.sort()
print(fruits)          # ['apple', 'banana', 'grape', 'lemon']

fruits.reverse()
print(fruits)          # ['lemon', 'grape', 'banana', 'apple']

# (2) Méthodes à retour : capture et utilise la valeur renvoyée
nums = [1, 2, 2, 3, 2, 4]
print(nums.count(2))   # 3 (il y a trois 2)
print(nums.index(3))   # 3 (3 est le 4e élément = indice 3)

Pourquoi print(fruits.sort()) affiche None

Une erreur fréquente : écrire print(fruits.sort()) et voir None s'afficher. sort() ne renvoie pas de valeur — elle trie fruits sur place.

La bonne correction est d'appeler fruits.sort() seul, puis print(fruits) sur la ligne suivante — sépare en deux lignes.

Au passage, les détails sur les valeurs de retour (les valeurs que les méthodes et fonctions renvoient) seront couverts dans les articles sur les fonctions et la programmation orientée objet. Pour l'instant, il suffit de retenir les deux patterns : « sort / reverse changent la liste juste en étant appelées » et « count / index se capturent avec = puis s'utilisent ».

Analysons une liste de notes de test : scores = [72, 85, 91, 68, 77, 95, 85].

① Utilise sort() pour trier par ordre croissant, puis affiche la liste triée avec print().

② Utilise count() pour afficher avec print() combien de personnes ont obtenu 85.

Éditeur Python

Exécuter le code pour voir le résultat

Dans cet article, nous avons vu comment créer et accéder aux listes, le slicing, l'ajout et la suppression d'éléments, ainsi que le tri et la recherche.

QUIZ

Vérification des connaissances

Répondez à chaque question une par une.

Question 1Étant donné nums = [10, 20, 30], que contiendra nums après l'exécution de nums.append([40, 50]) ?

Question 2Étant donné items = [3, 1, 4, 1, 5], qu'affiche print(items.sort()) ?

Question 3Étant donné data = [10, 20, 30, 40], quel est le résultat de data[-2:] ?