Adloun

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

Une liste : des valeurs rangées dans l'ordre, repérées par un indice qui commence à 0.

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 ?

Définition 2.1Liste

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.

iRemarqueListe ou ensemble ?

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

La suite du cours · Tous les exercices du chapitre