Leçon 6
Python, générer une liste
Le cours écrit
Une liste est une série finie de valeurs numérotées. C'est la seule notion nouvelle d'algorithmique de l'année, et elle va très bien avec les suites.
6.1 Quelques rappels
Cette fonction calcule pour la suite de l'exemple 6.
def u(n):
x = 3
for k in range(n):
x = 2 * x - 1
return x
- Le signe
=est une affectation :x = 3signifie que prend la valeur . Dans un algorithme écrit en français, on note . - La boucle
forrépète le calcul fois. returnrenvoie le résultat. Ainsi,u(4)renvoie .
6.2 En extension
Une liste s'écrit entre crochets, avec des virgules. Quand on écrit tous ses éléments, on la génère en extension.
L = [15, 23, 31, 39]
Chaque élément a un indice, et le premier indice est . Ainsi, L[0] vaut et L[3] vaut . La fonction len donne le nombre d'éléments : len(L) vaut , et le dernier indice est .
6.3 Par ajouts successifs
On part d'une liste vide, et on ajoute les éléments un par un avec append.
L = []
for n in range(5):
L.append(n**2)
La liste L contient alors .
C'est très pratique pour une suite définie par récurrence : L[k] est le terme de rang , et on calcule le terme suivant.
L = [3]
for k in range(4):
L.append(2 * L[k] - 1)
La liste L contient alors .
6.4 En compréhension
La façon la plus courte est d'écrire, entre crochets, l'expression du terme suivie de for. On génère alors la liste en compréhension.
>>> [n**2 for n in range(5)]
[0, 1, 4, 9, 16]
>>> [15 + 8 * n for n in range(5)]
[15, 23, 31, 39, 47]
La première ligne se lit : « la liste des , pour allant de à ». Ces mots viennent des ensembles : un ensemble est donné en extension quand on cite ses éléments, comme , et en compréhension quand on le décrit par une propriété, comme « les carrés des entiers de à ».
Cette écriture convient bien aux formules explicites.
6.5 Ajouter une condition
Avec if, seuls les éléments qui vérifient la condition sont gardés. Le symbole % donne le reste de la division : n % 3 == 0 signifie que est un multiple de .
>>> [n for n in range(20) if n % 3 == 0]
[0, 3, 6, 9, 12, 15, 18]
>>> [n for n in range(13) if n % 2 == 0 and n % 3 == 0]
[0, 6, 12]
>>> [n for n in range(13) if n % 2 == 0 or n % 3 == 0]
[0, 2, 3, 4, 6, 8, 9, 10, 12]
Le mot and traduit le « et » de la logique : les deux conditions sont vraies. Le mot or traduit le « ou » : au moins une des deux conditions est vraie, éventuellement les deux.
6.6 Deux pièges
range(5)donne : cinq valeurs, mais pas le nombre . Plus généralement,range(n)donne les entiers de à .- Dans une liste de quatre éléments, les indices sont , , et . Écrire
L[4]provoque une erreur.
>>> L = [15, 23, 31, 39]
>>> L[4]
IndexError: list index out of range
Exercices 11 et 12
- Exercice 11 : lire des listes
- Exercice 12 : écrire des listes
Corrigés
Cherche d'abord les exercices sur ta feuille, puis compare avec le corrigé détaillé.