Listes - Bases#
En Python, une liste est une variable dans laquelle il est possible de stocker plusieurs valeurs (de types différents).
matieres = [ "français", "informatique", "allemand"]
notes = [5.7, 4.3, 5.1]
eleves = ["2F4", "Économie et droit", 5.0, 2007]
La liste matieres
ne contient que des éléments de type str
. La liste notes
ne contient que des éléments de type float
. Mais la liste eleves
contient
des éléments de types différents 'str', 'float' et 'int'.
Création d'une liste#
Une liste est déclarée par une suite de valeurs, séparées par des virgules et le tout encadré par des crochets.
Exemple 8#
matieres = [ "français", "informatique", "allemand"]
notes = [5.7, 4.3, 5.1]
eleves = ["2F4", "Économie et droit", 5.0, 2007]
print(matieres)
print(notes)
print(eleves)
Astuce
Pour écrire des crochets sur :
- Windows
[
AltGr+ è ou]
AltGr+ !- Mac
[
Option+ 5 ou]
Option+ 6
Il est aussi possible de créer une liste vide. Il suffit d'écrire les deux crochets sans rien à l'intérieur.
1liste_vide = []
Exercice 14#
Créez les listes suivantes en Python :
Les salles de classe dans lesquelles tu as des cours
Les années de naissance des membres de ta famille
La taille en mètres de tes amis
Affichez les trois listes.
# Écrivez le programme ici
Solution
1# Créations des listes
2salles = ["P207", "G107", "P214", "P-107"]
3annees_naissance = [1941, 1966, 1974, 1975, 1978, 2006]
4tailles = [1.8, 1.9, 1.96]
5
6# Affichage des listes
7print(salles)
8print(annees_naissance)
9print(tailles)
Accès à un élément d'une liste: indexation#
Un index
est attribué automatiquement à chaque élément d'une liste et
correspond à sa position dans la liste en partant de 0 depuis la gauche.
1notes = [5.5, 4.8, 6.0, 6.0, 3.5, 4.5]
notes |
5.5 |
4.8 |
6.0 |
6.0 |
3.5 |
4.5 |
---|---|---|---|---|---|---|
index |
0 |
1 |
2 |
3 |
4 |
5 |
Important
Le premier élément d'une liste est toujours à l'index 0. Dans une liste de n élément, le dernier élément sera à l'index n-1.
L'accès à un élément donné d'une liste se fait grâce à l'indexation :
liste[index]
coureurs = ["Bolt", "Powell", "Gatlin", "Montgommery", "Lewis"]
premier = coureurs[0]
print("En 1ère place:", premier)
print("En dernière place:", coureurs[4])
coureurs[3] = "Burrell"
print("La liste d'arrivée des coureurs est:", coureurs)
Exercice 15#
Complétez le programme suivant en utilisant l'indexation de manière à ce que le programme affiche le texte suivant:
rouge
noir
brun
bleu
couleurs = ["noir", "blanc", "brun", "gris", "rouge", "jaune", "bleu"]
# complétez les index corrects
print(couleurs[...])
print(couleurs[...])
print(couleurs[...])
print(couleurs[...])
Solution
1couleurs = ["noir", "blanc", "brun", "gris", "rouge", "jaune", "bleu"]
2print(couleurs[4])
3print(couleurs[0])
4print(couleurs[2])
5print(couleurs[6])
Exercice 16#
Ajoutez les instructions nécessaires pour que l'affichage de la liste soit le suivant:
['B', 'B', 'W', 'D', 'E', 'X']
lettres = ["A", "B", "C", "D", "E", "F"]
# ajoutez le code ici
print(lettres)
Solution
1lettres = ["A", "B", "C", "D", "E", "F"]
2# modification de la première lettre
3lettres[0] = "B"
4# modification de la troisième lettre
5lettres[2] = "W"
6# modification de la sixième lettre
7lettres[5] = "X"
8print(lettres)
Exercice 17#
Complétez le programme ci-dessous en utilisant l'indexation de manière à ce que le print affiche la liste suivante:
['Fribourg', 'Lausanne', 'Berne', 'Zurich', 'Genève]
Il vous faudra pour cela modifier les éléments de la liste villes.
villes = ["Fribourg", "Zug", "Berne", "Lugano", "Soleur"]
# à modifier
villes
villes
villes
print(villes)
Solution
1villes = ["Fribourg", "Zug", "Berne", "Lugano", "Soleur"]
2
3villes[1] = "Lausanne"
4villes[3] = "Zurich"
5villes[4] = "Genève"
6
7print(villes)
Exercice 18#
La fonction controle_position
prend en paramètre une liste à 2 éléments
correspondant à la position d'un personnage. Cette fonction doit afficher
"Position correcte" si les 2 coordonnées sont strictement positives.
def controle_position(position):
# modifiez le programme ici
print("Position correcte")
print("Position incorrecte")
controle_position([100, 200])
controle_position([-100, 200])
controle_position([100, -200])
controle_position([0, 200])
Solution
1def controle_position(position):
2 if position[0]>0 and position[1]>0:
3 print("Position correcte")
4 else:
5 print("Position incorrecte")
6
7controle_position([100, 200])
8controle_position([-100, 200])
9controle_position([100, -200])
10controle_position([0, 200])
Fonctions sur les listes#
En Python, il existe beaucoup de fonctions prédéfinies qui permettent de manipuler les listes. Nous en avons vu déjà rencontrées certaines dans Listes Lab - Découverte.
- len(ma_liste)
retourne le nombre d'éléments de la liste
- ma_liste.apppend(mon_element)
ajoute
mon_element
à la fin dema_liste
- ma_liste.insert(index, mon_element)
ajoute
mon_element
à l'index
spécifié- ma_liste.remove(mon_element)
efface la première occurence de
mon_element
- del ma_liste[index]
supprime l'élément de
ma_liste
qui se trouve à l'index
spécifié- ma_liste.index(mon_element)
retourne l'index de la première occurance de
mon_element
- sum(ma_liste)
retourne la somme de tous les éléments de la liste
- ma_liste.sort()
trie la liste par ordre croissant
- ma_liste.reverse()
inverse l'ordre des éléments
- ma_liste.count(mon_element)
retourne le nombre d'apparition de
mon_element
dansma_liste
Exercice 19#
1liste = [1, 5, 4, 12, 7, 9, 10, 2] 2print(liste[4])
1liste = [1, 5, 4, 12, 7, 9, 10, 2] 2liste[5] = 6 3print(liste)
1liste = [1, 5, 4, 12, 7, 9, 10, 2] 2liste.remove(5) 3print(liste)
1liste = [1, 5, 4, 12, 7, 9, 10, 2] 2liste.sort() 3print(liste)
1liste = [1, 5, 4, 12, 7, 9, 10, 2] 2del liste[2] 3print(liste)
1liste = [1, 5, 4, 12, 7, 9, 10, 2] 2liste.insert(1, 6) 3print(liste)
Exercice 20#
Créez une liste, nommée
sports
avec les éléments suivants:kayak
,escrime
etescalade
.Affichez la liste et son nombre d'éléments.
Demandez cinq sports à l'utilisateur et ajoutez-les à la liste
sports
.Afficher la liste et son nombre d'éléments.
Ajoutez l'élément
tennis de table
à l'index 3.Affichez la liste et son nombre d'éléments.
Effacez l'élément
escalade
.Affichez la liste et son nombre d'éléments.
Quel est l'index d'
escrime
? Affichez l'index d'escrime
.Effacez le cinquième élément de la liste.
Affichez la liste et son nombre d'éléments.
# Écrivez le programme ici
Solution
1sports = ["kayak", "escrime", "escalade"]
2print(sports, len(sports))
3for _ in range(5):
4 sport = await input_line("Entrer un sport: ")
5 sports.append(sport)
6print(sports, len(sports))
7sports.insert(3, "tennis de table")
8print(sports, len(sports))
9sports.remove("escalade")
10print(sports, len(sports))
11print(sports.index("escrime"))
12del sports[4]
13print(sports, len(sports))
Exercice 21#
Demandez à l'utilisateur d'entrer 6 nombres et stockez-les dans la liste 'nombres'.
Afficher la liste.
Trier la liste.
Afficher la liste.
Inverser l'ordre des éléments.
Afficher la somme des éléments.
# Écrivez le programme ici
Solution
1nombres = []
2for _ in range(5):
3 n = float(await input_line("Entrer un nombre: "))
4 nombres.append(n)
5print(nombres, len(nombres))
6nombres.sort()
7print(nombres, len(nombres))
8nombres.reverse()
9print(nombres, len(nombres))
10print(sum(nombres))
Exercice 22#
Sans exécuter le code, répondez aux questions suivantes:
Que va retourner
nombres.index(5)
?Que va retourner
nombres.index(3)
?Que va retourner
nombres.count(1)
?Quelle sera la liste après l'instruction
nombres.remove(4)
?Quelle sera la liste après l'instruction
nombres.reverse()
?Quelle sera la liste après l'instruction `nombres.sort()?
# Complétez le code pour tester vos réponses
nombres = [1, 4, 2, 1, 5, 7, 3, 1, 4, 5, 3, 1, 3, 1, 2, 5]
Solution
1nombres = [1, 4, 2, 1, 5, 7, 3, 1, 4, 5, 3, 1, 3, 1, 2, 5]
2print(nombres.index(5))
3print(nombres.index(3))
4print(nombres.count(1))
5nombres.remove(4)
6print(nombres)
7nombres.reverse()
8print(nombres)
9nombres.sort()
10print(nombres)
Exercice 23#
Dans le programme suivant, les ingrédients d'une pizza devraient pouvoir être
ajoutés petit à petit par l'utilisateur dans la liste ingredients
qui contient
la sauce tomate et la mozzarella comme base. Cet ajout se termine lorsque
l'utilisateur écrit le texte "stop", ensuite tous les ingrédients sont affichés.
ATTENTION: le mot stop ne doit jamais entrer dans la liste des ingrédients!
Complétez le programme de manière que celui-ci corresponde à cette description.
ingredients = ["sauce tomate", "mozzarella"]
choix = await input_line("Ajouter un ingrédient: ")
while choix != "stop":
# à compléter
print(ingredients)
Solution
1ingredients = ["sauce tomate", "mozzarella"]
2choix = await input_line("Ajouter un ingrédient: ")
3
4while choix != "stop":
5 ingredients.append(choix)
6 choix = await input_line("Ajouter un ingrédient: ")
7
8print(ingredients)
Exercice 24#
Une liste nommée meteo_semaine doit contenir les prévisions météos pour les 7 jours d'une semaine. Cette liste doit contenir 7 éléments, chacun étant un texte de prévision météorologique pour un jour différent.
Ces textes ont tous le format suivant:
"JOUR_DE_LA_SEMAINE il fera TEMPERATURE °C" où JOUR_DE_LA_SEMAINE et PREVISION sont remplacés par de vraies valeurs. Par exemple, pour un mardi à 13°C, le texte de prévision serait "Mardi il fera 13 °C".
Afin de simplifier la création de cette liste, complétez la fonction
ajoute_prevision
afin que celle-ci ajoute la prévision correcte à la liste
donnée en paramètre en fonction des paramètres du jour et de la température.
def ajoute_prevision(liste_prevision, jour_de_la_semaine, temperature):
# à compléter
meteo_semaine = []
# ajout des prévision
ajoute_prevision(meteo_semaine, "Lundi", "12")
ajoute_prevision(meteo_semaine, "Mardi", "15")
ajoute_prevision(meteo_semaine, "Mercredi", "14")
ajoute_prevision(meteo_semaine, "Jeudi", "14")
ajoute_prevision(meteo_semaine, "Vendredi", "12")
ajoute_prevision(meteo_semaine, "Samedi", "10")
ajoute_prevision(meteo_semaine, "Lundi", "8")
print(meteo_semaine)
Solution
1def ajoute_prevision(liste_previsions, jour_de_la_semaine, temperature):
2 prevision = jour_de_la_semaine + " il fera " + temperature + " °C"
3 liste_previsions.append(prevision)
4
5meteo_semaine = []
6
7ajoute_prevision(meteo_semaine, "Lundi", "12")
8ajoute_prevision(meteo_semaine, "Mardi", "15")
9ajoute_prevision(meteo_semaine, "Mercredi", "14")
10ajoute_prevision(meteo_semaine, "Jeudi", "14")
11ajoute_prevision(meteo_semaine, "Vendredi", "12")
12ajoute_prevision(meteo_semaine, "Samedi", "10")
13ajoute_prevision(meteo_semaine, "Lundi", "8")
14
15print(meteo_semaine)
Exercice 25#
Écrivez un programme qui génère une liste de 1000 nombres entiers tirés au hasard entre 1 et 10.
Déterminez le nombre d'occurences de chaque nombre.
Astuce
Dans le module random
, la fonction randint(a, b)
permet de généré des
nombres entiers aléatroires entre a (compris) et b (compris).
Ne pas oublier l'import: from random import randint
# Écrivez le programme ici
Solution
1from random import randint
2
3nombres = []
4
5# Genère la liste de 50 nombres entiers
6for _ in range(1000):
7 nombres.append(randint(1, 10))
8
9for i in range(1, 11):
10 print("Nombre d'occurences de", i, ":", nombres.count(i))
Différence variable simple et variable de type liste#
Exemple 9#
Exécutez le code donné. Que se passe-t-il lorsqu'on modifie la valeur de la variable 'a'?
a = 5
b = a
print("a:", a, "b:", b)
a = 4
print("a:", a, "b:", b)
|
La référence de la variable |
Exemple 10#
Exécutez le code donné. Que se passe-t-il lorsqu'on modifie la valeur de la variable 'liste_a'?
a = [1, 2, 3]
b = a
print("a:", a, "b:", b)
a[1] = 9
print("a:", a, "b:", b)
b.append(7)
print("a:", a, "b:", b)
|
En modifiant le deuxième élément de la variable a
avec a[1] = 9
, la variable
b
est aussi modifiée, car c'est la même liste qui est référencée.
De même b.append(7)
modifie aussi la variable a
(elle ajoute un élément).