Chapitre 2 : Les listes dans Python.

Introduction :

Comment garder en mémoire les 30 notes d'une classe, ou les scores successifs d'une partie de jeu, sans créer 30 variables différentes ?

1. Introduction aux listes

En Python, une liste permet de regrouper plusieurs valeurs dans une seule variable.

On écrit une liste entre crochets [ ], en séparant les éléments par des virgules.

Exemple : notes = [15, 12, 18]

Chaque élément possède un indice (sa position dans la liste). Le premier élément a l’indice 0.

Exemple : notes[0] vaut 15.

2. Exercice : Indices dans une liste

À faire dans le cahier.

On considère la liste liste1 = [22, 14, 5, 8 , 0, 34, 56].

  1. Quel est l'indice du nombre 14 ?
  2. Combien la liste a-t-elle d'éléments ?
  3. Quel est l'indice du nombre 56 ?

3. Manipulation des listes :

Les manipulations basiques :

4. Exercice : Création de listes

Écrire les instructions Python permettant de créer :

  • une liste course qui contient les chaînes "banane", "Crème fraiche", "Moutarde" (dans cet ordre) ;
  • une liste notes qui contient les nombres 10, 5, 8, 7 (dans cet ordre).
# À compléter


    
>>>

5. Exercice : Longueur d'une liste

Écrire une instruction Python qui stocke dans la variable longueur le nombre d’éléments contenus dans la liste nombres suivante :

nombres = [ 12, 45, 78, 3, 9, 11, 56, 87, 99, 102, 5, 18, 23, 67, 44, 72, 81, 36, 14, 29, 7, 64, 53, 90, 38, 21, 49, 85, 32, 16, 101, 150, 75, 66, 27, 200, 142, 31, 47, 8, 300, 415, 522, 639, 741, 852, 963, 111, 222, 333, 444, 555, 666, 777, 888, 999, 135, 246, 357, 468, 579, 680, 791, 802, 913, 1024, 2048, 4096, 8192, 9999, 1234, 2345, 3456, 4567, 5678, 6789, 7890, 8901, 9012, 1123, 2211, 3322, 4433, 5544, 6655, 7766, 8877, 9988, 10001, 11011, 12021, 13031, 14041, 15051, 16061, 17071, 18081, 19091, 20002, 21012 ] longueur = .. print(f"la liste contient {longueur} éléments.")


    
>>>

6. Exercice : Ajout d'éléments avec append

Compléter le code suivant afin d’ajouter les éléments manquants à la liste fruits :

fruits = ["pomme"] # ajouter "banane" # ajouter "orange" # ajouter "kiwi" print(fruits)


    
>>>

7. Exercice : Suppression d'éléments avec pop

Compléter le code suivant afin de retirer les bons éléments de la liste animaux :

animaux = ["chat", "chien", "lapin", "tortue", "poisson"] # supprimer "chien" # supprimer "tortue" print(animaux)


    
>>>

8. Les indices négatifs

En python, liste[-1] désigne le dernier élément de la liste, liste[-2] l'avant dernier etc.

9. Exercice : Suppression du dernier élément

On souhaite apprendre à utiliser la méthode pop(-1) en Python, qui permet de supprimer et de retourner le dernier élément d’une liste.

Compléter le code suivant afin de retirer le dernier élément de la liste mots :

mots = [ "arbre", "maison", "voiture", "fleur", "chat", "chien", "lapin", "pluie", "soleil", "lune", "école", "stylo", "cahier", "ordinateur", "clavier", "souris", "écran", "fenêtre", "porte", "chaise", "table", "livre", "bouteille", "verre", "eau", "feu", "air", "terre", "montagne", "rivière", "forêt", "plage", "mer", "océan", "île", "village", "ville", "route", "train", "avion", "pomme", "banane", "poire", "raisin", "cerise", "fraise", "melon", "pastèque", "orange", "citron", "éléphant", "tigre", "lion", "zèbre", "girafe", "singe", "panda", "ours", "renard", "loup", "sapin", "rosier", "tulipe", "orchidée", "marguerite", "bleuet", "pissenlit", "lavande", "chêne", "érable", "guitare", "piano", "violon", "tambour", "flûte", "trompette", "harpe", "batterie", "saxophone", "clarinette", "rouge", "bleu", "vert", "jaune", "noir", "blanc", "rose", "violet", "gris", "marron" ] # supprimer le dernier élément avec pop(-1)


    
>>>

10. Exercice : Recherche d'un élément dans une liste

Compléter la fonction ci-dessous pour qu’elle renvoie "Trouvé" si le langage recherché est présent dans la liste langages, sinon "Absent". Utiliser if ... in ....

langages = [ "java", "c", "python", "ruby", "go", "c++", "c#", "javascript", "typescript", "kotlin", "swift", "rust", "php", "perl", "scala", "haskell", "elixir", "dart", "lua", "r", "matlab", "fortran", "cobol", "pascal" ] def est_present(langages, cible): # retourner "Trouvé" si cible est dans langages, sinon "Absent" if ... in ...: return "Trouvé" else: return "Absent" langage = "Python" print(f"{langage} est {est_present(langages, langage)} dans cette liste.")

    
>>>

11. Exercice : Vérifier l'appartenance à une liste

On organise une soirée et l’entrée est réservée aux invités inscrits sur une liste. Écrire une fonction est_invite(nom) qui prend en paramètre un prénom et qui renvoie "Bienvenue" si la personne fait partie de la liste, sinon "Désolé, vous n’êtes pas sur la liste".

invites = [ "Alice", "Bob", "Charlie", "Diane", "Eve", "François", "Gabriel", "Hélène", "Isabelle", "Jacques", "Karim", "Laura", "Marc", "Nadia", "Olivier", "Paul", "Quentin", "Rania", "Sophie", "Thomas", "Ursule", "Valérie", "William", "Xavier", "Yasmine", "Zacharie", "Amélie", "Benoît", "Clara", "David", "Élodie", "Fabrice", "Gérard", "Hugo", "Inès", "Jules", "Katia", "Léo" ] def est_invite(nom): # compléter avec if ... in ... ... personne = "Cléo" print(f"Bonjour {personne}, : {est_invite(personne)}.")

    
>>>

12. Exercice : Compter les éléments d'une liste

Créer une fonction plus_de_5_elements qui prend une liste de nombres en paramètre et qui renvoie True si la liste contient 5 éléments ou plus, et False sinon.

Exemples :

>>> plus_de_5_elements([7,8,9])
False
>>> plus_de_5_elements([1,2,3,4,5,6,7,8,9])
True
def plus_de_5_elements(liste): # compléter avec len ... liste1 = [1, 6, 9, 10, 6, 3, 8] if plus_de_5_elements(liste1): print(f"La liste {liste1} a 5 éléments ou plus.") else: print(f"La liste {liste1} a 4 éléments ou moins.")

    
>>>

13. Les tranches (slices) dans les listes

En Python, on peut extraire une partie d’une liste grâce à l’opérateur : (deux-points). Cette opération s’appelle une tranche (slice).

Exemple de liste :

notes = [8, 12, 15, 9, 14, 17, 10, 13]

Quelques exemples d’utilisation :

On peut aussi ajouter un pas :

notes[::2]   # un élément sur deux

Résumé : la syntaxe liste[début:fin:pas] permet d’obtenir une partie de la liste sans la modifier. Si une borne est absente, Python la remplace par le début ou la fin de la liste.

14. Exercice : Extraire une partie d'une liste

Compléter le code pour obtenir une liste sous_liste contenant les trois éléments du milieu de la liste notes.

notes = [8, 12, 15, 9, 14, 17, 10, 13]
# On veut extraire [15, 9, 14]
notes = [8, 12, 15, 9, 14, 17, 10, 13] sous_liste = notes[...] # à compléter print(sous_liste)


    
>>>

15. Exercice : Du début à une position

Compléter le code pour obtenir une sous-liste debut contenant les 4 premiers éléments de la liste notes.

notes = [8, 12, 15, 9, 14, 17, 10, 13] debut = notes[...] # à compléter print(debut)


    
>>>

16. Exercice : De la position 3 jusqu’à la fin

Compléter le code pour obtenir une sous-liste fin contenant tous les éléments à partir de l’indice 3.

notes = [8, 12, 15, 9, 14, 17, 10, 13] fin = notes[...] # à compléter print(fin)


    
>>>

17. Exercice : Un élément sur deux

Compléter le code pour créer une nouvelle liste un_sur_deux contenant un élément sur deux de la liste notes.

notes = [8, 12, 15, 9, 14, 17, 10, 13] un_sur_deux = notes[...] # à compléter print(un_sur_deux)


    
>>>

18. Exercice : Inverser une liste

Utiliser la syntaxe des tranches pour créer une version inversée de la liste notes.

notes = [8, 12, 15, 9, 14, 17, 10, 13] inverse = notes[...] # à compléter print(inverse)


    
>>>

19. Exercice : Les meilleures notes

Problème : Un professeur enregistre les notes de ses élèves dans une liste Python triée par ordre croissant. Il souhaite connaître la moyenne des meilleures notes, c’est-à-dire des trois dernières valeurs de la liste.

Compléter la fonction moyenne_meilleures_notes(notes) qui prend en paramètre une liste d’entiers (les notes triées) et renvoie la moyenne des trois plus grandes notes.

⚠️ Indice : utilisez une tranche pour extraire la partie de la liste qui vous intéresse.

Exemples :

moyenne_meilleures_notes([1,1,1,1,1,1,1,1,1,1,1,2,2,2,12,13,14]) → 13.0
moyenne_meilleures_notes([5, 7, 9]) → 7.0
moyenne_meilleures_notes([2, 4, 6, 8, 10]) → 8.0
def moyenne_meilleures_notes(notes): """ Renvoie la moyenne des trois meilleures notes. On suppose que la liste est triée par ordre croissant. """ # à compléter meilleures = notes[...] # extraire les trois dernières notes somme = meilleures[...] + meilleures[...] + meilleures[...] moyenne = ... / ... return moyenne liste = [1, 3, 4, 7, 8, 9, 12, 15, 16, 17, 18] print(f"La moyenne des trois meilleurs notes de {liste} est {moyenne_meilleures_notes(liste)}.")

    
>>>