Passer au contenu principal
eLearner.app
Module 3 · Leçon 1 sur 49/36 dans le cours~12 min
Leçons du module (1/4)

Listes

Une liste est une séquence ordonnée et mutable d'éléments. C'est la structure de données la plus utilisée en Python : vous en créez une avec [] et la modifiez avec un ensemble de méthodes à mémoriser.

Créer une liste

Python
vuota = []
numeri = [10, 20, 30]
mista = [1, "due", 3.0, True, None]    # types différents : légal mais rare

Accès par index et slice (tranche)

Les index commencent à 0. Les index négatifs comptent à partir de la droite :

Python
parole = ["a", "b", "c", "d"]
parole[0]    # 'a'
parole[-1]   # 'd'   (dernier)
parole[1:3]  # ['b', 'c']   slice [start:stop]
parole[::-1] # ['d', 'c', 'b', 'a']   inversé

Un slice ne lève jamais d'IndexError : s'il est hors limites, il renvoie une sous-liste vide. L'accès direct comme parole[10], en revanche, lève une exception.

Modifier une liste

Python
nums = [1, 2, 3]
nums.append(4)         # [1, 2, 3, 4]    ajoute à la fin
nums.insert(0, 0)      # [0, 1, 2, 3, 4] insère à la position
nums.extend([5, 6])    # [0, 1, 2, 3, 4, 5, 6]   concatène
nums.pop()             # 6   extrait le dernier
nums.pop(0)            # 0   extrait le premier (plus lent : O(n))
nums.remove(3)         # supprime la PREMIÈRE occurrence de 3
nums[1] = 99           # remplace par index

Tri

Deux formes — il est important de les distinguer :

Python
nums = [3, 1, 4, 1, 5, 9, 2, 6]
nums.sort()          # MODIFIE nums in place, renvoie None
ordinati = sorted(nums)  # renvoie une NOUVELLE liste, laisse nums inchangée
nums.sort(reverse=True)
sorted(nums, key=lambda n: -n)   # tri par clé

Longueur, appartenance, itération

Python
len(nums)              # combien d'éléments
3 in nums              # True/False
for n in nums:
    print(n)

Copier une liste

a = b ne copie pas — cela crée simplement un second nom pour la même liste. Pour copier réellement :

Python
copia = lista[:]            # slice complet
copia = list(lista)         # constructeur explicite
copia = lista.copy()        # méthode

(Toutes ces copies sont superficielles (shallow copies) — les éléments imbriqués restent partagés.)

Copier des listes : attention aux références

En Python, lorsque vous écrivez list_b = list_a, vous ne créez pas de copie : vous créez simplement une deuxième référence. Modifier list_b altérera également list_a. Pour créer une véritable copie indépendante, vous devez écrire list_b = list_a.copy() ou utiliser un slice complet : list_b = list_a[:].

À vous de jouer

Exercice#python.m3.l1.e1
Tentatives : 0Chargement…

Étant donné la liste `nums = [5, 2, 8, 1, 9, 3]`, construisez `first_three_sorted` avec les trois premiers nombres de nums triés par ordre croissant. Ne modifiez pas nums.

Chargement de l'éditeur…
Afficher l'indice

nums[:3] sont les trois premiers, puis sorted(...).

Solution disponible après 3 tentatives

Exercice de révision

Exercice#python.m3.l1.e2
Tentatives : 0Chargement…

En partant de `words = ['ciao']`, ajoutez 'mondo' à la fin, puis insérez '!' au début. Évaluez `words`.

Chargement de l'éditeur…
Afficher l'indice

append à la fin, insert(0, ...) au début.

Solution disponible après 3 tentatives

Défi supplémentaire

Exercice#python.m3.l1.e3
Tentatives : 0Chargement…

Étant donné la liste `items = [10, 20, 30, 40]`, utilisez le découpage (slicing) pour créer une nouvelle liste `reversed_items` contenant les mêmes éléments mais dans l'ordre inverse. Enfin, évaluez `reversed_items`.

Chargement de l'éditeur…
Afficher l'indice

Le découpage avec un pas négatif est [::-1]. Assignez-le à reversed_items.

Solution disponible après 3 tentatives