Cours — Algorithmique — Listes (1ère spé)
Cette page propose un cours de mathématiques en 1ère Spécialité sur Algorithmique — Listes. Tu y retrouves les notions essentielles, les méthodes à connaître et des exemples pour travailler variables, conditions, boucles, raisonnement algorithmique.
Cours
Cours de mathématiques en 1ère Spécialité : Algorithmique — Listes
Fiches
Fiche de révision maths 1ère Spécialité : Algorithmique — Listes
Exercices
Exercices corrigés de mathématiques en 1ère Spécialité : Algorithmique — Listes
Quiz
Quiz de maths 1ère Spécialité : Algorithmique — Listes
1ère Spé
Chapitres
Cours — Algorithmique : Les listes
Créer • parcourir • modifier • filtrer • calculer • programmer avec des fonctions • exploiter en mathématiques.
1) Objectifs et méthode de travail
Compétences essentielles
- Consolider les notions de variable, d’affectation, de condition, de boucle et de fonction.
- Générer une liste en extension, par ajouts successifs ou en compréhension.
- Accéder à un élément, utiliser ses indices, ajouter, remplacer ou supprimer un élément.
- Parcourir une liste sur ses valeurs ou sur ses indices.
- Utiliser un accumulateur ou un compteur.
- Rechercher, compter et filtrer des données selon une condition.
- Structurer un programme en fonctions : entrées, traitement, sortie avec
return. - Mobiliser les listes dans des problèmes de suites, fonctions, probabilités ou statistiques.
Schéma de raisonnement
Avant de coder, identifier précisément :
données → objectif → initialisation → boucle → test éventuel → mise à jour → résultat.
Un programme peut être syntaxiquement correct mais mathématiquement faux. Toujours le tester sur un petit exemple dont on connaît déjà le résultat.
Affectation : dans
x = 5, le symbole = signifie que la valeur 5 est stockée dans la variable x. Ce n’est pas une égalité à démontrer comme en mathématiques.
2) Générer une liste : trois méthodes à connaître
A. En extension
On écrit directement tous les éléments connus.
L = [2, 5, 8, 11]
Ici, la liste contient quatre valeurs, dans cet ordre.
B. Par ajouts successifs
L = []
for n in range(5):
L.append(2*n + 1)
On obtient
[1, 3, 5, 7, 9]. On part d’une liste vide puis on ajoute chaque nouvelle valeur.C. En compréhension
L = [2*n + 1 for n in range(5)]
Cette écriture condense la génération précédente. Elle se lit : « construire la liste des valeurs \(2n+1\) lorsque \(n\) parcourt \(0,1,2,3,4\) ».
Comparer les trois écritures
| Méthode | Quand l’utiliser ? | Exemple |
|---|---|---|
| En extension | Les valeurs sont déjà connues. | [2, 5, 8] |
| Ajouts successifs | Les valeurs sont construites étape par étape. | L.append(x) |
| Compréhension | Une formule et éventuellement une condition décrivent directement les éléments. | [n*n for n in range(5)] |
Exemple — relier liste et expression mathématique
Pour \(u_n=n^2-3n+2\), la commande
U = [n*n - 3*n + 2 for n in range(6)]
donne [2, 0, 0, 2, 6, 12], c’est-à-dire \([u_0,u_1,\ldots,u_5]\).
3) Éléments, indices et taille
Indices positifs
L = [12, 5, 8, 21, 7]
L[0] # 12
L[2] # 8
L[4] # 7
Le premier indice est 0. Pour une liste de taille \(n\), les indices usuels vont de \(0\) à \(n-1\).
Taille et dernier élément
len(L) # 5
L[-1] # 7
L[-2] # 21
Les indices négatifs comptent depuis la fin : \(-1\) est le dernier élément.
Piège : si
len(L) == 5, alors L[5] est hors de la liste.4) Parcourir une liste
Parcours sur les valeurs
for x in L:
print(x)
À chaque tour,
x prend directement la valeur d’un élément. À privilégier lorsque la position n’est pas nécessaire.Parcours sur les indices
for i in range(len(L)):
print(i, L[i])
Ici,
i prend les valeurs \(0,1,\ldots,len(L)-1\). Cette méthode est indispensable si on doit comparer des positions ou modifier L[i].
Vocabulaire : itérer sur les éléments d’une liste signifie répéter un traitement pour chacun de ses éléments. Une boucle
for réalise précisément cette itération.
Comment choisir ?
Somme ou comptage : souvent
Recherche d’un indice, comparaison de termes consécutifs ou modification : souvent
for x in L.Recherche d’un indice, comparaison de termes consécutifs ou modification : souvent
for i in range(len(L)).
5) Modifier une liste
Remplacer et ajouter
L = [4, 7, 12]
L[1] = 20 # [4, 20, 12]
L.append(9) # [4, 20, 12, 9]
Supprimer
L = [4, 20, 12, 9]
x = L.pop() # x vaut 9 ; L devient [4, 20, 12]
y = L.pop(1) # y vaut 20 ; L devient [4, 12]
L.remove(12) # supprime la première occurrence de 12
pop(i) retire l’élément d’indice i et renvoie sa valeur ; remove(x) supprime la première occurrence de la valeur x.Une liste Python est mutable : son contenu peut être modifié après sa création.
6) Listes en compréhension et logique
Transformer chaque valeur
carres = [x*x for x in [2, 4, 5]]
Résultat :
[4, 16, 25].Filtrer avec une condition
pairs = [n for n in range(1, 11) if n % 2 == 0]
Résultat :
[2, 4, 6, 8, 10]. Le if joue le rôle de filtre logique.Exemple mathématique — résoudre une inégalité sur un ensemble d’entiers
S = [n for n in range(1, 11) if n*n - 7*n + 10 <= 0]
Comme \(n^2-7n+10=(n-2)(n-5)\), l’inégalité est vérifiée pour \(2\le n\le5\). On obtient donc
[2, 3, 4, 5].
7) Accumulateurs : somme, produit, moyenne, max/min
Somme et moyenne
s = 0
for x in L:
s = s + x
moy = s / len(L)
La somme commence à 0 car 0 est l’élément neutre de l’addition.
Produit
p = 1
for x in L:
p = p * x
Un produit commence à 1. Initialiser à 0 rendrait immédiatement tout le produit nul.
Maximum
maxi = L[0]
for x in L:
if x > maxi:
maxi = x
Minimum
mini = L[0]
for x in L:
if x < mini:
mini = x
Condition : le calcul d’une moyenne et les algorithmes de maximum/minimum utilisant
L[0] supposent que la liste est non vide.8) Rechercher, compter et filtrer
Présence d’une valeur
trouve = False
for x in L:
if x == cible:
trouve = True
Le booléen mémorise si la cible a été rencontrée au moins une fois.
Compter une propriété
c = 0
for x in L:
if x > 10 and x % 2 == 0:
c = c + 1
Le compteur n’augmente que lorsque les deux conditions sont vraies.
Trouver le premier indice
indice = -1
for i in range(len(L)):
if L[i] == cible and indice == -1:
indice = i
La condition
indice == -1 empêche de remplacer le premier indice trouvé par une occurrence plus tardive.Construire une liste filtrée
R = []
for x in L:
if x >= 0:
R.append(x)
On peut aussi écrire
R = [x for x in L if x >= 0].9) Programmer de façon modulaire avec des fonctions
Une fonction informatique reçoit des entrées, effectue un traitement et fournit une sortie. Découper un problème en fonctions rend le programme plus lisible, testable et réutilisable.
Exemple : moyenne
def moyenne(L):
s = 0
for x in L:
s = s + x
return s / len(L)
L est le paramètre d’entrée ; la moyenne est la valeur renvoyée. Une fois la fonction définie, on peut par exemple écrire m = moyenne([10, 12, 8]).Exemple : filtrage paramétré
def sup_seuil(L, a):
R = []
for x in L:
if x > a:
R.append(x)
return R
La même fonction fonctionne pour n’importe quelle liste
L et n’importe quel seuil a.Piège :
print(...) affiche ; return ... renvoie une valeur utilisable dans la suite du programme.10) Applications mathématiques de niveau Première Spécialité
Suite définie par récurrence
u = 1
U = [u]
for n in range(4):
u = 2*u + 3
U.append(u)
On obtient
[1, 5, 13, 29, 61], soit \(u_0\) à \(u_4\).Recherche d’un seuil
u = 5
n = 0
while u <= 1000:
u = 1.5*u + 2
n = n + 1
La boucle s’arrête au premier rang où \(u_n>1000\). Ici, elle termine avec
n = 12.Deux listes associées : moyenne pondérée
notes = [12, 8, 15, 5]
coef = [2, 1, 3, 2]
s = 0
c = 0
for i in range(len(notes)):
s = s + notes[i]*coef[i]
c = c + coef[i]
m = s/c
On utilise les indices car chaque note doit être associée au coefficient de même position. Ici, \(m=\dfrac{87}{8}=10{,}875\).
Application — fréquence dans une série de données
donnees = [1, 0, 1, 1, 0, 1, 0, 1]
c = 0
for x in donnees:
if x == 1:
c = c + 1
f = c / len(donnees)
Ici, la valeur 1 apparaît 5 fois sur 8 : \(f=\dfrac{5}{8}=0{,}625\). Les listes permettent ainsi de traiter naturellement des séries statistiques et des simulations.
11) Compléments Python utiles
Ces outils sont pratiques en Python, mais ils ne doivent pas remplacer la compréhension des parcours, tests et fonctions.
Sous-listes
L = [2, 4, 6, 8, 10, 12]
L[1:4] # [4, 6, 8]
L[:3] # [2, 4, 6]
L[3:] # [8, 10, 12]
Dans
L[a:b], l’indice a est inclus et b est exclu.Tri
M = sorted(L) # nouvelle liste triée
L.sort() # modifie L
Repère simple de coût
Un accès direct à
L[i] ne parcourt pas toute la liste, tandis qu’une somme, un maximum ou une recherche simple nécessitent en général de parcourir les éléments.12) Formulaire essentiel
Commandes
len(L) # taille
L[i] # élément d'indice i
L[-1] # dernier élément
L.append(x) # ajoute x
L.pop(i) # retire et renvoie L[i]
L.remove(x) # supprime la première occurrence de x
x in L # présence
Générations
[f(n) for n in range(a, b)]
[f(n) for n in range(a, b) if condition]
R = []
for x in L:
if condition:
R.append(x)
while condition:
# répéter tant que la condition est vraie
pass
13) Checklist “copie parfaite”
- Je sais distinguer affectation, test logique, boucle et fonction.
- Je sais générer une liste de trois façons.
- Je maîtrise indices,
len, parcours sur valeurs et parcours sur indices. - Je sais modifier, ajouter et supprimer un élément.
- Je sais écrire une liste en compréhension avec ou sans condition.
- Je sais utiliser accumulateur, compteur, booléen et recherche d’indice.
- Je sais écrire une fonction avec paramètres et
return. - Je sais utiliser des listes pour traiter une suite ou des données mathématiques.
- Je vérifie toujours le résultat sur un exemple simple.
Suivez votre progression
Connectez-vous pour enregistrer votre progression et vos tentatives de quiz.