Listes#

Une liste permet de conserver plusieurs valeurs dans une même variable. Elle devient vraiment utile lorsqu’on la parcourt avec une boucle ou lorsqu’on veut mémoriser une série de résultats.

Dès la seconde

Comprendre une liste#

Créer une liste#

Les éléments d’une liste sont écrits entre crochets et séparés par des virgules. Ils peuvent être des nombres, du texte ou même un mélange des deux. Ce mélange est autorisé, mais une liste de valeurs de même nature est généralement plus facile à parcourir, comparer ou calculer.

Exemple
Créer des listes
Prêt
Sortie

Un élément peut être ajouté à melange directement entre les crochets avant une nouvelle exécution.

Repérer un élément par son indice#

Les indices commencent à 0. Dans une liste de quatre éléments, les indices sont donc 0, 1, 2 et 3. L’indice -1 désigne le dernier élément.

-4-3-2-1
L10203040
indice0123
Exemple
Accéder aux éléments
Prêt
Sortie

Un indice à corriger#

La liste suivante contient quatre éléments. Pourtant, le programme cherche à accéder à l’indice 4.

À corriger
Retrouver le dernier élément
Erreur attendue
Sortie

Comment chercher ?

IndexError indique qu’un indice dépasse les limites de la liste. Les quatre éléments occupent les indices 0, 1, 2 et 3. Pour viser le dernier élément sans connaître la longueur de la liste, un indice négatif est également possible.

Travailler avec une liste#

Parcourir une liste#

Une boucle for peut parcourir directement les éléments d’une liste. Il n’est alors pas nécessaire de manipuler leurs indices.

Exemple
Parcourir une liste
Prêt
Sortie

À chaque passage, mot prend la valeur de l’élément suivant. Remplace print(mot) par print(len(mot)) pour afficher la longueur de chaque mot.

Calculer à partir d’une liste#

len(L) renvoie le nombre d’éléments d’une liste. On peut donc additionner les notes avec une boucle puis diviser par leur nombre.

Exemple
Moyenne d’une liste de notes
Prêt
Sortie

Avant d’ajouter une note, il est intéressant de prévoir si la moyenne va augmenter ou diminuer.

Construire une nouvelle liste#

Pour fabriquer la liste des carrés, on peut partir d’une liste vide puis ajouter un résultat à chaque passage de la boucle.

Exemple
Construire les carrés pas à pas
Prêt
Sortie

Cette construction fait apparaître trois actions : parcourir, calculer, puis ajouter. Python propose aussi une écriture plus compacte, appelée liste en compréhension.

Construction pas à pas
carres = []
for n in range(6):
    carres.append(n**2)
Écriture en compréhension
carres = [n**2 for n in range(6)]
Exemple
Une liste de carrés
Prêt
Sortie

Les deux programmes produisent exactement la même liste. La première écriture est souvent plus facile à décomposer ; la seconde devient pratique lorsque la transformation est courte.

Une condition peut être ajoutée pour ne conserver que certaines valeurs.

Exemple
Sélectionner certaines valeurs
Prêt
Sortie

Avant l’exécution, repère le rôle de la variable nombre et prévois les trois valeurs retenues.

Cette écriture fait le lien avec la description d’un ensemble en mathématiques. Par exemple, [n**2 for n in range(11) if n % 2 == 0] construit la liste associée à

\[\{n^2\mid n\in\{0,1,\ldots,10\}\text{ et }n\text{ est pair}\}.\]

On y lit successivement la valeur fabriquée, les valeurs parcourues, puis la condition de sélection. Une liste conserve toutefois un ordre et peut contenir plusieurs fois la même valeur, contrairement à un ensemble mathématique.

Opérations utiles#

Les opérations suivantes sont pratiques pour manipuler une liste déjà construite. Elles peuvent aussi servir de référence lorsqu’un exercice en a besoin.

Extraire plusieurs éléments#

La syntaxe L[a:b] extrait les éléments d’indices a à b-1. Comme avec range, la borne de droite est exclue.

Exemple
Extraire une tranche
Prêt
Sortie

Le résultat de L[4:8] peut être prévu avant l’exécution. Les écritures L[:3] et L[-2:] sont également à observer.

Modifier et réunir des listes#

La méthode append() ajoute un élément à la fin d’une liste existante.

Exemple
Ajouter un élément
Prêt
Sortie

Pour ajouter deux autres valeurs, il faut appeler append une fois pour chaque nouvel élément.

L’opérateur + permet de concaténer deux listes, c’est-à-dire de les placer l’une à la suite de l’autre.

Exemple
Concaténer deux listes
Prêt
Sortie

Avec deux listes de mots, la comparaison de L1 + L2 et L2 + L1 montre l’importance de l’ordre.

Rechercher et trier#

index() renvoie la position de la première occurrence d’une valeur.

Exemple
Rechercher un élément
Prêt
Sortie

Que se passe-t-il si la valeur cherchée n’est pas présente ? Le message obtenu est utile : index ne peut pas inventer une position.

sorted(L) produit une nouvelle liste triée sans modifier directement L.

Exemple
Trier sans modifier la liste initiale
Prêt
Sortie

Les deux affichages montrent que la liste initiale n’a pas changé. Pour conserver la liste triée, il faudrait par exemple écrire L_triee = sorted(L).

Retirer un élément#

La méthode remove() retire la première occurrence d’une valeur. Elle provoque une erreur si cette valeur n’est pas présente : il faut donc parfois vérifier avant d’agir.

L’expression valeur in liste renvoie True lorsque la valeur est présente et False sinon. Elle permet ici d’éviter d’appeler remove sur une valeur absente.

Exemple
Retirer une valeur
Prêt
Sortie

Une seule occurrence a disparu. Modifie la valeur recherchée et observe l’effet de la condition.

Et les chaînes de caractères ?#

Une chaîne de caractères ressemble à une liste de caractères : on peut utiliser len(), les indices, les tranches et une boucle for. L’expression texte in message permet aussi de tester si un texte plus court apparaît dans un autre.

Exemple
Parcourir un mot
Prêt
Sortie

Une différence importante demeure : on peut remplacer un élément d’une liste, mais pas un caractère isolé d’une chaîne. Les méthodes lower() et upper() produisent par exemple une nouvelle chaîne en minuscules ou en majuscules, sans modifier la chaîne initiale. Ces outils seront réutilisés pour analyser des données textuelles et étudier le chiffrement de César.

Exercices#

Exercice 1

Créer une liste contenant les nombres 5, 10 et 15, puis l’afficher.

À toi
Une liste de trois nombres
À faire
Sortie

Exercice 2

Créer une liste contenant trois mots, puis afficher son dernier élément.

À toi
Dernier mot
À faire
Sortie

Exercice 3

Créer deux listes, les concaténer et afficher le résultat.

À toi
Concaténer deux listes
À faire
Sortie

Exercice 4

Créer une liste d’au moins sept nombres, puis afficher les éléments d’indices 2 à 5 inclus.

À toi
Extraire les indices 2 à 5
À faire
Sortie

Exercice 5

Construire, en compréhension, la liste des carrés des entiers de 1 à 10 et l’afficher.

À toi
Carrés de 1 à 10
À faire
Sortie

Exercice 6

À partir de valeurs = [4, 11, 7, 18, 2, 13], construire une nouvelle liste ne contenant que les valeurs strictement supérieures à 10. La liste initiale ne doit pas être modifiée.

À toi
Valeurs supérieures à 10
À faire
Sortie

Exercice 7

Dans la liste notes = [12, 8, 15, 8, 17], retirer une seule fois la note 8, puis afficher la liste obtenue.

À toi
Retirer une note
À faire
Sortie

Dans le parcours