La notion de liste
Cours · algorithmique et programmation (première), chapitre 2 · première, algorithmique et programmation · le début du chapitre, la suite sur Adloun
Voici la nouveauté de l'année : la liste, structure qui rassemble plusieurs valeurs en un seul objet. Elle est partout en mathématiques — termes d'une suite, tableau de valeurs d'une fonction, série statistique, échantillon simulé — et son écriture en compréhension est le décalque exact de la notation des ensembles. Conformément au programme, on se limite aux listes, sans présenter d'autres collections.
2.1 Qu'est-ce qu'une liste ?
Une liste est une suite finie et ordonnée de valeurs, écrites entre crochets et séparées par des virgules. Chaque élément est repéré par son indice, qui commence à :
L = [12, 8, 15, 10]
print(len(L)) # 4 : longueur de la liste
print(L[0]) # 12 : premier élément (indice 0 !)
print(L[3]) # 10 : dernier élément (indice len(L) - 1)
print(L[-1]) # 10 : indice négatif = on compte depuis la fin
Une liste est une rangée de cases numérotées à partir de : accéder à L[len(L)] provoque une IndexError.
Contrairement à un ensemble (chapitre 1 du manuel de mathématiques), une liste tient compte de l'ordre et des répétitions : [1, 2, 2] et [2, 1, 2] sont deux listes différentes, de longueur . C'est la bonne structure pour une suite de valeurs ; l'analogie avec les ensembles se joue ailleurs — dans la génération en compréhension.
2.2 Générer une liste : trois façons
2.2.1 En extension
On énumère tous les éléments, comme un ensemble écrit en extension :
diviseurs_de_12 = [1, 2, 3, 4, 6, 12]
notes = [12.5, 9, 14, 11]
vide = [] # la liste vide, prête à être remplie
2.2.2 Par ajouts successifs
On part de la liste vide et on ajoute au fil d'une boucle avec append — le mode de génération naturel pour les suites récurrentes, où chaque valeur dépend de la précédente :
L = []
u = 5
for i in range(10):
L.append(u) # ajoute u À LA FIN de L
u = 0.8 * u + 4
# L contient les 10 premiers termes de la suite u_{n+1} = 0.8 u_n + 4
2.2.3 En compréhension
On décrit les éléments par une formule et un domaine, exactement comme un ensemble écrit en compréhension :
[n**2 for n in range(10)]
carres = [n**2 for n in range(10)] # [0, 1, 4, 9, ..., 81]
pairs = [2*k for k in range(5)] # [0, 2, 4, 6, 8]
images = [x**2 - 3*x for x in range(-2, 4)] # tableau de valeurs de f
Exercices du chapitre
- Générer par ajouts successifs la liste des premiers termes de la suite… corrigé
- Écrire une fonction inverse(L) qui renvoie une nouvelle liste… corrigé
- Écrire une fonction deuxieme max(L) renvoyant le deuxième plus grand… corrigé
- Écrire une fonction ecart maximal(L) renvoyant le plus grand écart… corrigé
- Écrire une fonction diviseurs(n) (liste en compréhension), puis est… corrigé
- Que renvoie mystere(12, 8, 15, 10, 15) corrigé