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#

  1. 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

  2. Affichez les trois listes.

# Écrivez le programme ici

Accès à un élément d'une liste: indexation#

Un indexest 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[...])

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)

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)

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])

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 de ma_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 dans ma_liste

Exercice 19#

  1. 1liste = [1, 5, 4, 12, 7, 9, 10, 2]
    2print(liste[4])
    
  2. 1liste = [1, 5, 4, 12, 7, 9, 10, 2]
    2liste[5] = 6
    3print(liste)
    
  3. 1liste = [1, 5, 4, 12, 7, 9, 10, 2]
    2liste.remove(5)
    3print(liste)
    
  4. 1liste = [1, 5, 4, 12, 7, 9, 10, 2]
    2liste.sort()
    3print(liste)
    
  5. 1liste = [1, 5, 4, 12, 7, 9, 10, 2]
    2del liste[2]
    3print(liste)
    
  6. 1liste = [1, 5, 4, 12, 7, 9, 10, 2]
    2liste.insert(1, 6)
    3print(liste)
    

Exercice 20#

  1. Créez une liste, nommée sports avec les éléments suivants: kayak, escrime et escalade.

  2. Affichez la liste et son nombre d'éléments.

  3. Demandez cinq sports à l'utilisateur et ajoutez-les à la liste sports.

  4. Afficher la liste et son nombre d'éléments.

  5. Ajoutez l'élément tennis de table à l'index 3.

  6. Affichez la liste et son nombre d'éléments.

  7. Effacez l'élément escalade.

  8. Affichez la liste et son nombre d'éléments.

  9. Quel est l'index d'escrime? Affichez l'index d'escrime.

  10. Effacez le cinquième élément de la liste.

  11. Affichez la liste et son nombre d'éléments.

# Écrivez le programme ici

Exercice 21#

  1. Demandez à l'utilisateur d'entrer 6 nombres et stockez-les dans la liste 'nombres'.

  2. Afficher la liste.

  3. Trier la liste.

  4. Afficher la liste.

  5. Inverser l'ordre des éléments.

  6. Afficher la somme des éléments.

# Écrivez le programme ici

Exercice 22#

Sans exécuter le code, répondez aux questions suivantes:

  1. Que va retourner nombres.index(5)?

  2. Que va retourner nombres.index(3)?

  3. Que va retourner nombres.count(1)?

  4. Quelle sera la liste après l'instruction nombres.remove(4)?

  5. Quelle sera la liste après l'instruction nombres.reverse()?

  6. 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]

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)

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)

Exercice 25#

  1. Écrivez un programme qui génère une liste de 1000 nombres entiers tirés au hasard entre 1 et 10.

  2. 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

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)

a = 5 crée une référence de la variable a vers la valeur 5 en mémoire.

b = a crée une référence de la variable b vers la même valeur que celle référencée par a.

Références sur le même nombre

a = 4 change la référence de la variable a vers la valeur 4 en mémoire.

La référence de la variable b elle ne change pas.

Références sur des nombres différents

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)

a = [1, 2, 3] crée une référence de la variable a vers la liste [1, 2, 3] en mémoire.

b = a crée une référence de la variable b vers la même liste que celle référencée par a.

Références sur une liste

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).