Aller au contenu

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

Listes en Python et compréhension : exercices corrigés de 1re

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

L'essentiel

  • Une liste se définit par énumération de ses éléments ou en compréhension : [expression for x in ...]. 1
  • La compréhension peut filtrer une autre liste avec une condition if : on garde seulement les éléments qui la vérifient. 3
  • Les indices commencent à 0 : le premier élément est L[0], et len(L) donne le nombre d'éléments.
  • Pour une suite ou une fonction, une liste en compréhension donne d'un coup toutes les valeurs, que l'on peut ensuite sommer, comparer ou tracer. 1

Comment utiliser ces exercices

Ces exercices te font manipuler les listes Python comme tu le ferais dans un devoir de première : lire une liste, la construire, la filtrer, puis l'utiliser pour une suite ou une fonction. Chaque exercice se fait d'abord sans ordinateur, sur papier : on te demande de prévoir ce que Python afficherait. Vérifie ensuite dans un éditeur si tu veux, mais l'important est de savoir raisonner avant d'exécuter.

Les exercices

Exercice 1 Lire une liste

★☆☆Environ 5 min

On définit en Python la liste L = [4, 7, 1, 9, 12].

  1. Que vaut L[0] ? Que vaut L[3] ?
  2. Que vaut len(L) ?
  3. Calcule la valeur de L[3] + len(L).
Indice 1

Le premier élément a l'indice 0.

Indice 2

len(L) compte les éléments de la liste, pas leur somme.

Voir la correction pas à pas
  1. On numérote les éléments à partir de 0 : L[0] = 4, L[1] = 7, L[2] = 1, L[3] = 9, L[4] = 12.

  2. Donc L[0] vaut 4 et L[3] vaut 9.

  3. La liste contient cinq éléments, donc len(L) vaut 5. Le dernier indice valide est 4, un de moins.

  4. On calcule L[3] + len(L) = 9 + 5 = 14.

Retiens la règle : pour une liste de n éléments, les indices vont de 0 à n − 1. Confondre « position » et « indice » est la source d'erreur la plus fréquente.

Exercice 2 Somme de carrés

★☆☆Environ 6 min

On considère C = [n**2 for n in range(6)].

  1. Écris la liste C en énumérant ses éléments.
  2. Calcule la somme des éléments de C.
Indice 1

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

Indice 2

n**2 signifie n2n^2.

Voir la correction pas à pas
  1. range(6) parcourt 0, 1, 2, 3, 4, 5.

  2. On élève chaque valeur au carré : 02=00^2=0, 12=11^2=1, 22=42^2=4, 32=93^2=9, 42=164^2=16, 52=255^2=25.

  3. La liste est donc C = [0, 1, 4, 9, 16, 25].

  4. On additionne : 0+1+4+9+16+25=550+1+4+9+16+25 = 55.

Cette liste est du même type que celle des carrés des entiers de 0 à 9 citée dans les ressources Éduscol. 1 Ici l'arrêt est à 5, car range(6) exclut 6.

Exercice 3 Filtrer les nombres pairs

★☆☆Environ 6 min

Soit P = [n for n in range(1, 21) if n % 2 == 0]. L'opération n % 2 donne le reste de la division de n par 2.

  1. Écris la liste P.
  2. Combien d'éléments contient-elle ?
Indice 1

Un entier est pair quand le reste de sa division par 2 vaut 0.

Indice 2

range(1, 21) va de 1 jusqu'à 20 inclus.

Voir la correction pas à pas
  1. On parcourt les entiers de 1 à 20.

  2. On ne garde que ceux dont le reste dans la division par 2 est 0, c'est-à-dire les nombres pairs.

  3. P = [2, 4, 6, 8, 10, 12, 14, 16, 18, 20].

  4. On compte : il y a 10 éléments, donc len(P) vaut 10.

La condition if joue le rôle d'un filtre : c'est le principe de la compréhension qui sélectionne des éléments d'une autre liste. 3 On obtient de même une liste de nombres pairs inférieurs à 10 avec une condition de parité. 4

Exercice 4 Écrire la compréhension

★★☆Environ 8 min

Écris, en une seule ligne de Python, une liste en compréhension qui donne :

  1. les multiples de 5 compris entre 5 et 50 ;
  2. les carrés des entiers impairs de 1 à 9.

Précise pour chacune la liste obtenue.

Indice 1

Pour les multiples de 5, tu peux soit filtrer avec n % 5 == 0, soit calculer 5 * k.

Indice 2

Pour les impairs, le reste dans la division par 2 vaut 1.

Voir la correction pas à pas
  1. Première liste, par calcul : [5 * k for k in range(1, 11)]. Elle donne 5, 10, 15, …, 50.

  2. Autre écriture possible, par filtrage : [n for n in range(1, 51) if n % 5 == 0], qui donne le même résultat.

  3. Deuxième liste : [n**2 for n in range(1, 10) if n % 2 == 1].

  4. On garde 1, 3, 5, 7, 9 puis on élève au carré : [1, 9, 25, 49, 81].

Plusieurs écritures différentes peuvent donner la même liste. Une bonne vérification consiste à écrire à la main les deux ou trois premiers éléments.

Exercice 5 Les termes d'une suite arithmétique

★★☆Environ 10 min

On considère la suite arithmétique (un)(u_n) définie par un=3n+2u_n = 3n + 2. On construit la liste U = [3*n + 2 for n in range(10)].

  1. Donne les trois premiers éléments de U.
  2. Quel est le dernier élément de U ?
  3. Calcule la somme des éléments de U.
Indice 1

range(10) donne les indices de 0 à 9 : la liste contient donc u0,u1,…,u9u_0, u_1, \dots, u_9.

Indice 2

Tu peux additionner à la main, ou regrouper : 3×(0+1+⋯+9)+10×23 \times (0+1+\dots+9) + 10 \times 2.

Voir la correction pas à pas
  1. Pour n=0n=0, u0=2u_0 = 2 ; pour n=1n=1, u1=5u_1 = 5 ; pour n=2n=2, u2=8u_2 = 8.

  2. Le dernier indice est 9, donc u9=3×9+2=29u_9 = 3 \times 9 + 2 = 29.

  3. La somme des indices de 0 à 9 vaut 0+1+⋯+9=450+1+\dots+9 = 45.

  4. La somme des éléments vaut 3×45+10×2=135+20=1553 \times 45 + 10 \times 2 = 135 + 20 = 155.

Chaque élément de la liste correspond à un terme de la suite : la compréhension remplace ici le tableau de valeurs que tu ferais à la main.

Exercice 6 Valeurs d'une fonction et minimum

★★☆Environ 10 min

Soit la fonction f(x)=x2−4x+1f(x) = x^2 - 4x + 1. On construit V = [x**2 - 4*x + 1 for x in range(-2, 6)].

  1. Quels entiers x sont parcourus ?
  2. Écris la liste V.
  3. Quelle est la plus petite valeur de V ?
Indice 1

range(-2, 6) commence à −2 et s'arrête avant 6.

Indice 2

Fais un petit tableau : une ligne pour x, une ligne pour f(x)f(x).

Voir la correction pas à pas
  1. Les valeurs de x sont −2, −1, 0, 1, 2, 3, 4, 5, soit huit entiers.

  2. On calcule : f(−2)=4+8+1=13f(-2)=4+8+1=13 ; f(−1)=1+4+1=6f(-1)=1+4+1=6 ; f(0)=1f(0)=1 ; f(1)=1−4+1=−2f(1)=1-4+1=-2.

  3. Suite : f(2)=4−8+1=−3f(2)=4-8+1=-3 ; f(3)=9−12+1=−2f(3)=9-12+1=-2 ; f(4)=16−16+1=1f(4)=16-16+1=1 ; f(5)=25−20+1=6f(5)=25-20+1=6.

  4. V = [13, 6, 1, -2, -3, -2, 1, 6]. La plus petite valeur est −3, atteinte pour x=2x=2.

On retrouve le minimum de la parabole en x=2x = 2, ce qui est cohérent avec la forme f(x)=(x−2)2−3f(x) = (x-2)^2 - 3. Une liste de valeurs permet donc de conjecturer un extremum avant de le démontrer.

Exercice 7 Carrés multiples de 3

★★☆Environ 10 min

On définit M = [n**2 for n in range(11) if (n**2) % 3 == 0].

  1. Écris la liste des carrés de 0 à 10.
  2. Écris la liste M.
  3. Calcule la somme de ses éléments.
Indice 1

Commence par écrire tous les carrés de 0 à 10, puis barre ceux qui ne sont pas divisibles par 3.

Indice 2

Un carré est divisible par 3 exactement quand l'entier de départ l'est.

Voir la correction pas à pas
  1. Les carrés de 0 à 10 sont : 0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100.

  2. On garde ceux dont le reste dans la division par 3 est 0 : 0, 9, 36 et 81.

  3. M = [0, 9, 36, 81], qui correspond aux entiers 0, 3, 6 et 9.

  4. La somme vaut 0+9+36+81=1260 + 9 + 36 + 81 = 126.

Ici, la condition porte sur la valeur calculée n**2 et non sur n : lis toujours ce qui est testé après if. Le résultat est le même que si l'on avait filtré les multiples de 3 parmi les entiers puis élevé au carré.

Exercice 8 Termes d'une suite définie par récurrence

★★★Environ 15 min

La suite (un)(u_n) est définie par u0=1u_0 = 1 et un+1=2un+1u_{n+1} = 2u_n + 1. On remplit une liste T avec les huit premiers termes (u0u_0 à u7u_7) grâce à une boucle :

T = [1]
for k in range(7):
    T.append(2 * T[-1] + 1)
  1. Écris la liste T.
  2. Conjecture une formule explicite pour unu_n en observant T.
  3. Calcule la somme des éléments de T.
Indice 1

T[-1] désigne le dernier élément de la liste, et append ajoute un élément à la fin.

Indice 2

Compare chaque terme à une puissance de 2 : 2, 4, 8, 16…

Voir la correction pas à pas
  1. T commence par 1. À chaque tour de boucle, on ajoute le double du dernier terme, plus 1.

  2. On obtient : 1, 3, 7, 15, 31, 63, 127, 255. La boucle s'exécute sept fois, d'où huit éléments en tout.

  3. Chaque terme est une puissance de 2 moins 1 : un=2n+1−1u_n = 2^{n+1} - 1. Cette formule reste une conjecture, qu'une récurrence permettrait de démontrer.

  4. On additionne avec la formule : ∑n=07(2n+1−1)=(2+4+⋯+256)−8=510−8=502\sum_{n=0}^{7} (2^{n+1}-1) = (2+4+\dots+256) - 8 = 510 - 8 = 502.

Une boucle construit la liste terme après terme quand on connaît la relation de récurrence ; une compréhension s'utilise dès qu'on dispose d'une formule explicite. Les deux écritures donnent ici la même liste.

Exercice 9 Abscisses et ordonnées pour un tracé

★★★Environ 15 min

Pour tracer la courbe de f(x)=x2f(x) = x^2 sur l'intervalle [−2 ; 2][-2\,;\,2] avec un pas de 0,5, on construit d'abord la liste des abscisses :

abscisse = [-2 + 0.5 * k for k in range(9)]
ordonnee = [x**2 for x in abscisse]
  1. Écris la liste abscisse.
  2. Écris la liste ordonnee.
  3. Calcule la somme des éléments de ordonnee.
  4. Que remarques-tu sur la symétrie de la liste ordonnee ?
Indice 1

La première abscisse est −2, la dernière vaut −2+0,5×8-2 + 0{,}5 \times 8.

Indice 2

Les abscisses opposées ont le même carré.

Voir la correction pas à pas
  1. Pour kk de 0 à 8, on obtient : −2 ; −1,5 ; −1 ; −0,5 ; 0 ; 0,5 ; 1 ; 1,5 ; 2. La dernière valeur est bien 2.

  2. On élève au carré : 4 ; 2,25 ; 1 ; 0,25 ; 0 ; 0,25 ; 1 ; 2,25 ; 4.

  3. On additionne par paires symétriques : 2×(4+2,25+1+0,25)+0=2×7,5=152 \times (4 + 2{,}25 + 1 + 0{,}25) + 0 = 2 \times 7{,}5 = 15.

  4. La liste ordonnee se lit de la même façon de gauche à droite et de droite à gauche, car f(−x)=f(x)f(-x) = f(x) : la fonction carré est paire, ce qui se voit sur sa courbe.

Les ressources Éduscol utilisent justement une liste en compréhension de la forme [f(x) for x in abscisse] pour préparer le tracé d'une courbe. 1 Les deux listes ont la même longueur, ce qui permet d'associer chaque abscisse à son ordonnée.

Les questions qu'on se pose

Pourquoi le premier élément d'une liste a-t-il l'indice 0 ?

C'est la convention de Python : l'indice mesure le décalage par rapport au début de la liste. Le premier élément est à décalage 0, le deuxième à décalage 1, et ainsi de suite. Pour une liste de nn éléments, le dernier indice est donc n−1n-1. Si tu écris un indice égal à len(L), Python signale une erreur car il dépasse la fin de la liste.

Quelle est la différence entre une liste définie par énumération et une liste en compréhension ?

Une liste par énumération écrit chaque élément un par un, comme [0, 1, 4, 9]. Une liste en compréhension donne une règle qui produit les éléments, comme un ensemble défini par une propriété en mathématiques. 1 La seconde est plus courte et reste lisible quand la liste est longue ; la première convient aux petites listes.

Comment savoir où placer le `if` dans une compréhension ?

Le if se place à la fin, après la source : [n**2 for n in range(11) if n % 2 == 0]. Il décide quels éléments de la source sont retenus, puis l'expression au début calcule la valeur de chacun. 3 Pour t'y retrouver, lis la phrase à haute voix : « le carré de n, pour n dans les entiers de 0 à 10, si n est pair ».

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