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.
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.
L10203040
Un indice à corriger#
La liste suivante contient quatre éléments. Pourtant, le programme cherche à accéder à l’indice 4.
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.
À 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.
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.
Cette construction fait apparaître trois actions : parcourir, calculer, puis ajouter. Python propose aussi une écriture plus compacte, appelée liste en compréhension.
carres = []
for n in range(6):
carres.append(n**2)
carres = [n**2 for n in range(6)]
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.
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 à
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.
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.
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.
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.
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.
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.
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.
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.
Exercice 2
Créer une liste contenant trois mots, puis afficher son dernier élément.
Exercice 3
Créer deux listes, les concaténer et afficher le résultat.
Exercice 4
Créer une liste d’au moins sept nombres, puis afficher les éléments d’indices 2 à 5 inclus.
Exercice 5
Construire, en compréhension, la liste des carrés des entiers de 1 à 10 et l’afficher.
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.
Exercice 7
Dans la liste notes = [12, 8, 15, 8, 17], retirer une seule fois la note 8, puis afficher
la liste obtenue.
Dans le parcours