Aller au contenu

Mathématiques (spécialité) · PremièreÉpreuve anticipée de mathématiques

Listes en Python et compréhension de listes : cours de 1re

Publié le 6 novembre 2026 · Mis à jour le 6 novembre 2026 · Signaler une erreur

L'essentiel

  • Une liste Python regroupe des éléments rangés dans l'ordre ; on lit l'élément d'indice kk avec L[k], et le premier indice vaut 0.
  • On construit une liste par énumération ([2, 4, 6]), par boucle avec append, ou en compréhension ([f(x) for x in ...]).
  • Une liste en compréhension reprend la forme d'un ensemble défini par une propriété : une expression, une boucle, éventuellement une condition if.
  • Pour tracer une fonction ou étudier une suite, on calcule d'abord la liste des abscisses, puis la liste des images en compréhension.
  • Pièges classiques : indice hors limites, range qui s'arrête avant sa borne finale, confusion entre filtrer (if) et transformer (l'expression).

Pourquoi utiliser des listes

Jusqu'ici, une variable contenait une seule valeur : un nombre, un texte. Or, en mathématiques, tu manipules souvent des familles de nombres : les termes d'une suite, les valeurs d'une fonction pour plusieurs abscisses, les notes d'une classe, les résultats d'une série de tirages. Écrire une variable par valeur devient vite impossible. Il faut un objet capable de contenir plusieurs valeurs à la fois : c'est le rôle de la liste.

Le programme de première introduit cette notion, qui trouve naturellement sa place dans de nombreuses situations d'algorithmique. 1 Les documents d'accompagnement choisissent de ne traiter que les listes : aucune autre famille de collections n'est présentée, et on ne cherche pas à séparer ce qu'est une liste de ce qu'est un tableau. 1 Dans ce cours, tu vas donc apprendre à créer une liste, à la lire, à la parcourir, puis à la construire d'un seul coup avec une écriture très compacte : la compréhension de liste.

Créer une liste et lire ses éléments

Une liste garde l'ordre dans lequel tu as rangé les éléments, et elle accepte les répétitions : [3, 3, 5] est une liste valide, alors que l'ensemble {3,3,5}\{3, 3, 5\} s'écrit plutôt {3,5}\{3, 5\}. C'est une différence importante avec les ensembles des mathématiques : deux listes comportant les mêmes nombres dans un ordre différent sont deux listes différentes.

Indices et valeurs de la liste L
Indice0123
Valeur de L47912
NotationL[0]L[1]L[2]L[3]
Indices et valeurs de la liste L · Pour L = [4, 7, 9, 12], le premier indice est 0.

Modifier une liste et la parcourir

Une liste n'est pas figée : tu peux changer un élément, en ajouter ou en retirer. C'est ce qui la distingue d'un n-uplet (tuple), qui est une liste immuable. 4

L = [4, 7, 9, 12]
L[1] = 70          # L vaut maintenant [4, 70, 9, 12]
L.append(15)       # L vaut maintenant [4, 70, 9, 12, 15]

L'affectation L[1] = 70 remplace l'élément d'indice 1. La méthode append ajoute un élément à la fin.

Construire une liste avec une boucle

Souvent, on ne connaît pas la liste à l'avance : on veut la calculer. La méthode classique consiste à partir d'une liste vide, puis à ajouter les éléments un par un dans une boucle. La liste joue alors le rôle d'un « accumulateur ».

Construire une liste avec une boucleÉtapes pour construire une liste : créer la liste vide, parcourir, calculer, ajouter.1Liste videCréer L = [] avant la boucle2Parcourirfor n in range(...) : choisir les valeurs3CalculerObtenir la valeur à ranger à partir de n4AjouterL.append(valeur) place l'élément à la fin
  1. Liste videCréer L = [] avant la boucle
  2. Parcourirfor n in range(...) : choisir les valeurs
  3. CalculerObtenir la valeur à ranger à partir de n
  4. AjouterL.append(valeur) place l'élément à la fin
Construire une liste avec une boucle

La compréhension de liste

La boucle avec append fonctionne, mais elle prend quatre lignes pour une idée simple : « les carrés des entiers de 0 à 9 ». Les mathématiciens écrivent une telle collection en une seule expression, par exemple {n2∣n∈{0,…,9}}\{n^2 \mid n \in \{0, \dots, 9\}\}. Python permet une écriture très proche.

Filtrer avec une condition

On peut ne garder que certains éléments de la collection de départ. On ajoute alors, à la fin, un test introduit par if. Cette étape de filtrage est précisément ce qui rapproche la compréhension de liste de la définition d'un ensemble par une propriété. 3

Listes, fonctions et suites

La compréhension de liste sert beaucoup en mathématiques. Parmi les usages cités par les ressources officielles figure le tracé d'une courbe : on y construit la liste des images à l'aide d'une compréhension du type [f(x) for x in abscisse]. 1 On calcule d'abord la liste des abscisses, puis, en une ligne, la liste des images correspondantes. Les deux listes ont la même longueur et se correspondent terme à terme.

Listes de listes et de couples

Les éléments d'une liste peuvent eux-mêmes être des listes ou des couples. C'est ainsi qu'on représente des données organisées en table : les ressources officielles décrivent ces données comme une liste de p-uplets nommés. 2 Un p-uplet est une suite de pp valeurs ; en Python, un n-uplet (tuple) est une liste immuable d'objets qui peuvent être de types différents. 4

Récapitulatif et erreurs fréquentes

Boucle ou compréhension
ObjectifAvec boucle et appendEn compréhension
Carrés de 0 à 9L = [] puis for n in range(10) : L.append(n**2)[n**2 for n in range(10)]
Entiers pairs de 0 à 9for n in range(10) : if n%2==0 : L.append(n)[n for n in range(10) if n%2==0]
Images d'une fonctionfor x in A : L.append(f(x))[f(x) for x in A]
Boucle ou compréhension

Exercices corrigés

Exercice 1 Valeurs d'un polynôme et somme

★☆☆Environ 8 min

On définit en Python la liste L = [2*k**2 - 3*k + 1 for k in range(0, 6)].

  1. Écris la liste L en donnant ses éléments.
  2. Calcule la somme de ses éléments.
Indice 1

range(0, 6) donne les entiers de 0 à 5.

Indice 2

Remplace kk par chaque entier dans 2k2−3k+12k^2 - 3k + 1.

Voir la correction pas à pas
  1. range(0, 6) produit k=0,1,2,3,4,5k = 0, 1, 2, 3, 4, 5 (la borne 6 est exclue).

  2. On calcule : k=0k=0 donne 11 ; k=1k=1 donne 2−3+1=02-3+1=0 ; k=2k=2 donne 8−6+1=38-6+1=3 ; k=3k=3 donne 18−9+1=1018-9+1=10 ; k=4k=4 donne 32−12+1=2132-12+1=21 ; k=5k=5 donne 50−15+1=3650-15+1=36.

  3. La liste est donc [1, 0, 3, 10, 21, 36].

  4. La somme vaut 1+0+3+10+21+36=711+0+3+10+21+36 = 71.

La liste est [1, 0, 3, 10, 21, 36] et la somme de ses éléments vaut 71. Le piège était la borne : la liste compte six éléments, pas sept.

Exercice 2 Compter des multiples avec un filtre

★★☆Environ 10 min

Écris une compréhension qui renvoie la liste des multiples de 3 parmi les entiers de 1 à 49 inclus, puis donne le nombre d'éléments de cette liste.

Indice 1

Un entier nn est multiple de 3 si le reste de la division de nn par 3 est nul : n % 3 == 0.

Indice 2

Pour inclure 49, la borne de range doit être 50.

Voir la correction pas à pas
  1. La collection de départ est range(1, 50), qui donne les entiers de 1 à 49.

  2. La condition de sélection est n % 3 == 0.

  3. La liste s'écrit [n for n in range(1, 50) if n % 3 == 0].

  4. Les multiples de 3 sont 3,6,…,483, 6, \dots, 48, c'est-à-dire 3×1,…,3×163 \times 1, \dots, 3 \times 16. Il y en a 16.

La liste contient 16 éléments, de 3 jusqu'à 48. On peut vérifier avec len sur la compréhension.

Exercice 3 Dépassement d'un seuil dans une suite

★★★Environ 12 min

Soit la suite un=3n+2u_n = 3n + 2. On construit la liste U = [3*n + 2 for n in range(10)].

  1. Donne les éléments de U.
  2. Écris une compréhension qui garde les termes strictement supérieurs à 20, puis donne leur nombre.
Indice 1

Écris d'abord les dix termes, de u0u_0 à u9u_9.

Indice 2

Le test porte sur la valeur du terme : 3*n + 2 > 20.

Voir la correction pas à pas
  1. range(10) donne n=0,…,9n = 0, \dots, 9.

  2. Les termes sont [2, 5, 8, 11, 14, 17, 20, 23, 26, 29].

  3. On filtre avec [3*n + 2 for n in range(10) if 3*n + 2 > 20].

  4. On résout 3n+2>203n + 2 > 20, soit n>6n > 6 : les valeurs n=7,8,9n = 7, 8, 9 conviennent. La liste obtenue est [23, 26, 29].

  5. Elle contient 3 éléments. Remarque : le terme 20 est écarté, car l'inégalité est stricte.

Trois termes dépassent strictement 20 : 23, 26 et 29. L'inégalité stricte exclut u6=20u_6 = 20.

Quiz

8 questions · correction immédiate · ton score reste sur ton appareil.

  1. On définit L = [4, 7, 9, 12]. Que vaut L[2] ?

  2. Quelle liste est produite par [n**2 for n in range(4)] ?

  3. Combien d'éléments contient [x for x in range(20) if x % 5 == 0] ?

  4. Un n-uplet (tuple) est une liste immuable : on ne peut pas modifier ses éléments après sa création.

  5. Quelles écritures définissent bien une liste en compréhension ?

    Plusieurs réponses possibles.

  6. Que renvoie [n**2 for n in range(10) if n % 2 == 0] ?

  7. Pour L = [4, 7, 9, 12], que provoque l'instruction L[len(L)] ?

  8. Dans une liste, l'ordre des éléments n'a aucune importance : [1, 2] et [2, 1] sont la même liste.

Les questions qu'on se pose

Quelle est la différence entre une liste et un tableau ?

Au niveau de la classe de première, on ne cherche pas à les distinguer : les documents d'accompagnement ne présentent que les listes et laissent de côté toute différence avec les tableaux. 1 Retiens donc simplement que tu manipules des listes Python avec des crochets.

Pourquoi l'indice commence-t-il à 0 et non à 1 ?

C'est la convention de Python : l'indice indique le décalage par rapport au début de la liste, donc le premier élément est à un décalage de 0. Pour ne pas te tromper, retiens que dans une liste de nn éléments les indices vont de 00 à n−1n-1.

Dois-je toujours utiliser une compréhension plutôt qu'une boucle avec append ?

Non. Les deux écritures donnent la même liste. La compréhension est plus courte quand chaque élément se calcule indépendamment des autres. Quand un terme dépend du précédent, comme dans une suite définie par récurrence, la boucle avec append reste plus naturelle. Choisis l'écriture que tu sais expliquer et vérifier.

Comment savoir si je dois mettre un if dans ma compréhension ?

Relis l'énoncé : s'il demande de garder seulement certains éléments (les pairs, ceux qui dépassent un seuil), il faut un if. S'il demande de calculer quelque chose pour tous les éléments, il n'y en a pas. Le if se place à la fin, après for ... in ....

Qu'est-ce qui peut tomber à l'épreuve anticipée sur ce chapitre ?

On te demande surtout de lire un court programme et de dire ce qu'il affiche ou ce qu'il calcule, de compléter une ligne manquante (une borne de range, une condition) ou d'écrire une compréhension simple pour obtenir les valeurs d'une fonction ou d'une suite. Entraîne-toi à dérouler un programme à la main sur les premières valeurs.

À quoi sert vraiment une liste en mathématiques ?

À manipuler d'un coup de nombreuses valeurs : les termes d'une suite, les images d'une fonction pour tracer sa courbe, les résultats d'une expérience. Les ressources officielles mentionnent d'ailleurs le tracé d'une courbe comme usage de la compréhension de liste. 1

Sources

  1. Ressources Éduscol - Algorithmique et listes en Python, Éduscol - Ministère de l'Éducation. Consulté le 6 novembre 2026.
  2. Ressources Éduscol - Programmation en Python (doc 30007), Éduscol - Ministère de l'Éducation. Consulté le 6 novembre 2026.
  3. Liste en compréhension, Wikipédia. Consulté le 6 novembre 2026.
  4. Python (langage), Wikipédia. Consulté le 6 novembre 2026.

Les numéros dans le texte renvoient à ces sources. Une source qui ne dit pas ce qu'on lui fait dire ? Signale-le.

Signaler une erreur sur cette page

Je suis en…

Primaire

  • CP Bientôt
  • CE1 Bientôt
  • CE2 Bientôt
  • CM1 Bientôt
  • CM2 Bientôt

Collège

Lycée

Supérieur

  • BTS Bientôt
  • BUT Bientôt
  • Licence Bientôt
  • Prépas Bientôt

Sur cette page