Maths & NSI

Lexique — Première & Terminale

Notion de liste

Listes et ensembles

Générer une liste en extension

En Python, une liste se génère en extension en énumérant directement ses éléments entre crochets, ou en la construisant au fur et à mesure par des ajouts successifs.

notes = [12, 15, 8, 17, 10]      # liste generee en extension
 
carres = []                       # liste vide
for i in range(5):
    carres.append(i ** 2)         # ajouts successifs
# carres vaut [0, 1, 4, 9, 16]

Générer une liste en compréhension

Une liste en compréhension se construit à partir d'une expression appliquée à chaque élément d'un ensemble de départ (souvent range), éventuellement filtrée par une condition — ce qui permet de travailler la logique (voir la page « Vocabulaire ensembliste et logique »).

carres = [x**2 for x in range(10)]
# carres vaut [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
 
pairs = [x**2 for x in range(10) if x % 2 == 0]
# pairs vaut [0, 4, 16, 36, 64] : seuls les x pairs sont gardes

Cette écriture rappelle la notation ensembliste {x2:x∈{0,1,…,9}, x pair}\{x^2 : x \in \{0,1,\ldots,9\},\ x \text{ pair}\} : une liste en compréhension définit une collection à partir d'une propriété, comme un ensemble en compréhension.

Manipuler une liste : éléments et indices

Accéder à un élément par son indice

Chaque élément d'une liste possède un indice (sa position dans la liste), en commençant à 0.

fruits = ["pomme", "banane", "cerise"]
fruits[0]      # "pomme" (premier element, indice 0)
fruits[2]      # "cerise" (troisieme element, indice 2)
fruits[-1]     # "cerise" (dernier element)
len(fruits)    # 3 (nombre d'elements de la liste)

Modifier des éléments et la longueur

fruits[1] = "kiwi"            # remplace "banane" par "kiwi"
fruits.append("mangue")       # ajoute un element a la fin
fruits.insert(0, "abricot")   # insere en tete de liste (indice 0)
del fruits[2]                  # supprime l'element d'indice 2

Parcourir une liste, itérer sur ses éléments

Parcourir par indice

notes = [12, 15, 8, 17, 10]
for i in range(len(notes)):
    print("Note", i, ":", notes[i])

Itérer directement sur les éléments

Lorsqu'on n'a pas besoin de connaître la position, il est le plus souvent préférable d'itérer directement sur les éléments de la liste, sans passer par les indices :

total = 0
for note in notes:
    total = total + note
 
moyenne = total / len(notes)

Exemple. Compter, parmi une liste de notes, le nombre de notes supérieures ou égales à 10 :

notes = [12, 15, 8, 17, 10, 6, 9]
nb_admis = 0
for note in notes:
    if note >= 10:
        nb_admis = nb_admis + 1
# nb_admis vaut 4