dans cette leçon, vous allez apprendre à utiliser la syntaxe slicing pour extraire, copier ou manipuler des parties de liste.
objectifs
- comprendre la syntaxe
[start:stop:step] - extraire des sous-listes
- utiliser des pas positifs et négatifs
- copier une liste avec slicing
- éviter les erreurs d’index hors limites
rappel : indexation
- index positif : à partir du début (
0premier élément) - index négatif : à partir de la fin (
-1dernier élément)
slicing de base [start:stop]
extrait les éléments de start inclus jusqu’à stop exclu.
nums = [0, 1, 2, 3, 4, 5]
nums[1:4] # [1, 2, 3]
nums[:3] # [0, 1, 2] (start implicite = 0)
nums[3:] # [3, 4, 5] (stop implicite = fin)
indices hors limites → pas d’erreur :
nums[:99] # [0, 1, 2, 3, 4, 5]
slicing avec step [start:stop:step]
step peut être positif ou négatif.
nums[::2] # [0, 2, 4]
nums[1::2] # [1, 3, 5]
nums[::-1] # [5, 4, 3, 2, 1, 0] (renversement)
copie avec slicing
copie = nums[:] # copie superficielle
⚠ les sous-listes créées pointent vers les mêmes objets si la liste contient des objets mutables.
modifier via slicing
- remplacement :
nums[1:3] = [10, 11]
- insertion :
nums[2:2] = [99] # insère à l'index 2
- suppression :
nums[1:4] = [] # supprime indices 1 à 3
pas négatif pour inverser ou extraire en arrière
abc = ["a", "b", "c", "d", "e"]
abc[::-1] # ["e", "d", "c", "b", "a"]
abc[4:1:-1] # ["e", "d", "c"]
bonnes pratiques
- utilisez
[:]pour copier une liste simple - pour inverser, préférez
reversed(seq)si vous n’avez pas besoin d’une liste - évitez les slices avec pas = 0 (ValueError)
mini exemples exécutables
# extraire un bloc au milieu
data = list(range(10))
print(data[3:7]) # [3, 4, 5, 6]
# enlever le premier et le dernier
milieu = data[1:-1]
print(milieu)
# remplacer une section
data[4:6] = [99, 100]
print(data)
# inversion
print(data[::-1])
pièges courants
- oublier que
stopest exclu - penser que
[:]copie profondément (non, c’est superficiel) - confondre slicing avec indexation (slicing renvoie une nouvelle liste)
exercices
- créer une liste de 10 nombres, afficher les 3 du milieu.
- inverser une liste sans
reversed(). - insérer
[7, 8, 9]à la position 3 d’une liste[1, 2, 3, 4, 5]avec slicing. - supprimer les 2 premiers éléments d’une liste avec slicing.
- extraire tous les éléments d’indice pair d’une liste avec slicing.