Apprendre Python dans le secondaire
Open Source Your Knowledge, Become a Contributor
Technology knowledge has to be shared and made accessible for free. Join the movement.
Cours : Les listes
Présentation des listes
Les listes sont des incontournables de la programmation. Tant qu'il n'y a que quelques informations à stocker, la création de quelques variables peut suffire. Cependant, il n'st pas possible d'entrer une à une 1000 informations dans une variable individuelle. Pour cela, la liste peut contenir plusieurs informations en un seul endroit. C'est cette liste qui sera sauvegardée dans une variable.
Écriture
Les listes en python sont définies par des crochets []
. Les éléments de la liste sont disposés entre les crochets et séparés les uns des autres par une virgule ,
.
Pour commencer, une liste vide se crée simplement :
liste_vide = []
Création d'une liste
Pour créer une liste, il y a plusieurs façons de faire :
-
En encodant à la main les différentes valeurs :
Par exemple :ma_liste_de_nombres = [1, 4, 9, 3, 1, 2] ma_liste_de_courses = ["stylo", "pile", "souris", "clavier"] ma_liste_de_coordonnées_de_vecteurs = [(1,1), (0,1), (1,6)] ma_liste_bordélique = ["un texte", 18, 5.4, True, (1,0)]
N.B. : Il est possible de mélanger les types de données (chaine de caractères, nombre, booléen...) au sein d'une même liste.
-
En ajoutant des objets dans une liste :
Il y a plusieurs façons de s'y prendre :
-
.append(obj)
: il s'agit, en fait, d'une méthode. Le nom de la liste doit être renseigné avant le nom de la méthode.Important : Elle modifie directement la liste et ne renvoie rien.
1234ma_liste_de_courses = ["stylo", "pile", "souris", "clavier"]ma_liste_de_courses.append("effaceur")print(ma_liste_de_courses)Enter to Rename, Shift+Enter to PreviewL'appel à
liste.append(objet)
ajoute directement l'objet
à la fin de laliste
. La liste de départ a été modifiée !Il est possible de partir d'une liste vide, et ainsi ajouter des objets au fur et à mesure à l'aide d'une boucle.
Dans l'exemple ci-dessous, une liste vide est créée puis remplie avec 100 nombres tirés au hasard entre 0 et 99 inclus.
12345678910from random import randrangeliste_de_nombres = []i = 0while i < 100:aleat = randrange(0, 100)liste_de_nombres.append(aleat)i += 1print(liste_de_nombres)Enter to Rename, Shift+Enter to Preview -
.extend(autre_liste)
: il s'agit également d'une méthode. Le nom de la liste doit être renseigné avant le nom de la méthode.
Important : Elle modifie directement la liste et ne renvoie rien.1234567ma_liste_de_nombres = [1, 4, 9, 3, 1, 2]une_autre_liste_de_nombres = [6, 7, 8]ma_liste_de_nombres.extend(une_autre_liste_de_nombres)print(ma_liste_de_nombres)ma_liste_de_nombres.extend([6, 12, 14])print(ma_liste_de_nombres)Enter to Rename, Shift+Enter to PreviewL'appel à
liste.extend(objet)
ajoute directement tout le contenu de l'objet
à la fin de laliste
. La liste de départ a été modifiée !Important : L'
objet
doit être une liste. -
liste1 + liste2
: Comme pour les chaines de caractères, l'opérateur+
va permettre de concatener les deux listes dans l'ordre dans lequel elles ont été renseignées. La différence avec la méthode.extend()
est qu'aucune liste n'est modifiée ! Pour conserver le résultat de la concaténation des deux listes, il est nécessaire de le sauvegarder dans une variable.Pour résumer, la méthode
liste.extend(autre_liste)
correspond àliste = liste + autre_liste
mais, du coup, le contenu de laliste
de départ a changé.L'utilisation de la méthode
extend()
n'est pas meilleur que l'utilisation de l'opérateur+
, c'est le contexte qui détermine le meilleur usage.1234liste_chiffres_pairs = [0 ,2 ,4 ,6 , 8]liste_chiffres_impairs = [1, 3, 5, 7 ,9]print(liste_chiffres_pairs + liste_chiffres_impairs)Enter to Rename, Shift+Enter to PreviewLe résultat de l'opération s'affiche. Cependant, il n'est pas conservé dans une variable. Si l'utilisation de ce résultat s'avère nécessaire, le sauvegarder dans une variable devient obligatoire.
-
-
liste * n
: crée une nouvelle liste où la liste est répétée en bouclen
fois.123print([1] * 5)print([1, 2, 3]* 3)Enter to Rename, Shift+Enter to Preview -
En utilisant la fonction
list(obj)
: Cette fonction transforme, quand c'est possible,obj
en liste.123print(list("Hello World !"))print(list(1, 2, 3, 4, 5))Enter to Rename, Shift+Enter to Preview -
En utilisant la fonction
range(start, stop, step)
: Cette fonction retourne une énumération de nombres (en Python, on appelle ça un Iterateur).
Utilisations possibles de la fonction :range(stop)
: crée une énumération destop
nombres allant de0
àstop - 1
.
En informatique, on commence toujours à compter à partir de 0.range(start, stop)
: crée une énumération de nombres allant destart
àstop - 1
.range(start, stop, step)
: crée une énumération de nombres allant destart
àstop - 1
en sautant destep
enstep
.
Remarque : La fonction
range
fournit une énumération. En effet, ce n'est pas directement une liste de nombres comme on pourrait le penser en l'utilisant avec une bouclefor
.
On peut cependant très facilement en faire une liste en lui appliquant la fonctionlist()
.
Par exemple :123456print(range(6))print(list(range(6)))print(list(range(3, 9)))print(list(range(1, 15, 3)))print(list(range(7, 0, -1)))Enter to Rename, Shift+Enter to PreviewOn remarquera que le premier exemple ne donne pas une liste et qu'il faut absolument rajouter
list()
pour l'obtenir.
Opérations sur les listes
Maintenant qu'on sait créer des listes, encore faut-il pouvoir les manipuler. Voici un résumé des principales actions sur les listes.
-
liste[n]
: Permet de récupérer l'élément d'indice n. Attention : le premier élément est d'indice 0 !1234ma_liste_de_courses = [ "stylos rouges" , "piles" , "souris pour la salle info" , "claviers" ]print(ma_liste_de_courses[1])print(ma_liste_de_courses[-1])Enter to Rename, Shift+Enter to PreviewComme pour les chaines de caractères, un nombre négatif nous permet de partir de la fin. Astuce : Pour inverser deux éléments d'une liste, on peut écrire :
liste[i], liste[j] = liste[j], liste[i]
-
liste[n1:n2]
: Permet de récupérer la liste des éléments d'indice compris entre n1 et n2-1.1234ma_liste_de_courses = [ "stylos rouges" , "piles" , "souris pour la salle info" , "claviers" ]print(ma_liste_de_courses[1 : 3])print(ma_liste_de_courses[:3])Enter to Rename, Shift+Enter to PreviewComme pour les chaines de caractères, si on omet n1, on part du début et si on omet n2, on va jusqu'à la fin de la liste.
-
liste[n]= val
: Permet de modifier la valeur de l'élément d'indice n.1234ma_liste_de_courses = [ "stylos rouges" , "piles" , "souris pour la salle info" , "claviers" ]ma_liste_de_courses[1] = "piles rechargeables"print(ma_liste_de_courses)Enter to Rename, Shift+Enter to Preview -
len(liste)
: Donne la longueur de la liste (le nombre d'éléments).123ma_liste_de_courses = [ "stylos rouges" , "piles" , "souris pour la salle info" , "claviers" ]print(len(ma_liste_de_courses))Enter to Rename, Shift+Enter to Preview -
liste.remove(element)
: Retireelement
de la liste. Attention, il ne retire que la première occurrence, sielement
apparait plusieurs fois, il faut l'enlever plusieurs fois.1234ma_liste_de_courses = [ "stylos rouges" , "piles" , "souris pour la salle info" , "claviers" ]ma_liste_de_courses.remove("piles")print(ma_liste_de_courses)Enter to Rename, Shift+Enter to Preview -
liste.reverse()
: Renverse l'ordre de la liste. -
liste.count(element)
: Donne le nombre de fois où element se trouve dans la liste. -
sum(liste)
: Donne la somme des éléments de la liste lorsque c'est une liste de nombres bien entendu. Extremement pratique car elle évite une bouclefor
et sert très souvent. -
liste.sort()
: Trie liste dans l'ordre croissant. Si on veux avoir un tri dans l'ordre décroissant il faut écrireliste.sort(reverse=True)
. -
sorted(liste)
: Renvoie liste triée dans l'ordre croissant. Si on veux avoir un tri dans l'ordre décroissant il faut écriresorted(liste,reverse=True)
. Ces deux fonctions font semblablement la même à une grosse différence près : liste.sort() modifie liste ce qui veut dire qu'on perd notre liste de départ alors que sorted(liste) ne modifie pas liste, elle crée une nouvelle liste des éléments deliste
triés. -
element in liste
: Renvoie True si element est dans la liste et False sinon.1234ma_liste_de_courses = [ "stylos rouges" , "piles" , "souris pour la salle info" , "claviers" ]print("claviers" in ma_liste_de_courses)print("stylos" in ma_liste_de_courses)Enter to Rename, Shift+Enter to PreviewRemarquez bien que "stylos" n'est pas dans la liste car c'est "stylos rouges" qui y est, ce qui n'est pas la même chaine de caractères.
QCM
Voici quelques QCM pour voir si vous avez bien compris. N'hésitez pas à relire ce qui précède si vous avez un doute.
QCM 1
QCM 2
liste = [ 1, 3 ]
print(liste * 2)
QCM 3
QCM 4
liste = [ 1, 5, 4, 12, 7, 9 ,10 , 2]
print(liste[4])
QCM 5
liste = [ 1, 5, 4, 12, 7, 9 ,10 , 2]
print(liste[3:5])
QCM 6
liste = [ 1, 5, 4, 12, 7, 9, 10, 2]
print(...)
QCM 7
liste = [ 1, 5, 4, 12, 7, 9, 10, 2]
liste[5] = 6
print(liste)
QCM 8
liste = [ 1, 5, 4, 12, 7, 9, 10, 2]
liste.remove(5)
print(liste)
QCM 9
liste = [ 1, 5, 4, 12, 7, 9, 10, 2]
liste.sort()
print(liste)
QCM 10
liste = [ 1, 1+1, "un", "2+3", 7, 23, "1", "vingt trois"]
print(23 in liste)
print(2 in liste)
print(5 in liste)
print("7" in liste)
print("vingt" in liste)
print("23" in liste)
print("vingt trois" in liste)
print([7, 23] in liste)