Listes
Définition :
oUne liste est une structure de données qui contient une collection
d'objets Python.
oIl s'agit d'un nouveau type par rapport aux entiers, float, booléens et
chaînes de caractères que nous avons vus.
oOn parle aussi d'objet séquentiel en ce sens qu'il contient une séquence
d'autres objets.
oPython autorise la construction de liste contenant des valeurs de types
différents, ce qui leur confère une grande flexibilité.
oUne liste est déclarée par une série de valeurs (n'oublier pas les
guillemets, simples ou doubles, s'il s'agit de chaînes de caractères)
séparées par des virgules, et le tout encadré par des crochets.
Exemple :
animaux = ["girafe", "tigre", "singe", "souris"]
tailles = [5, 2.5, 1.75, 0.15]
mixte = ["girafe", 5, "souris", 0.15] 55
Listes
Remarque:
oAttention au fait que les indices d'une liste de n éléments commencent à
0 et se terminent à n-1.
oSi on appelle l'élément d'indice 4 de notre liste, Python renverra un
message d'erreur comme : animaux[4]
56
Opération sur les listes
oles listes supportent l'opérateur + de concaténation, ainsi que l'opérateur
* pour la duplication.
oL'opérateur + est très pratique pour concaténer deux listes.
oVous pouvez aussi utiliser la méthode .append() lorsque vous souhaitez
ajouter un seul élément à la fin d'une liste.
Exemple:
ocréer une liste vide: liste1 = []
oajouter deux éléments, l'un après l'autre, avec la concaténation:
liste1 = liste1 + [15]
liste1 = liste1 + [-5]
[Link](13)
oLa liste peut également être indexée avec des nombres négatifs.
oliste : ["girafe", "tigre", "singe", "souris"]
oindice positif : 0 1 2 3
oindice négatif : -4 -3 -2 -1 57
Opération sur les listes
oLes indices négatifs reviennent à compter à partir de la fin.
oLeur principal avantage est que vous pouvez accéder au dernier élément
d'une liste à l'aide de l'indice -1 sans pour autant connaître la longueur
de cette liste.
Exemple:
oanimaux = ["girafe", "tigre", "singe", "souris"]
oanimaux[-1]
oanimaux[-4]
oanimaux[0]
58
Listes - Tranches
oUn autre avantage des listes est la possibilité de sélectionner une partie
d'une liste en utilisant un indiçage construit sur le modèle [m:n+1] pour
récupérer tous les éléments, du mième au nième (de l'élément m inclu à
l'élément n+1 exclu).
oOn dit alors qu'on récupère une tranche de la liste.
Exemple:
oanimaux = ["girafe", "tigre", "singe", "souris"]
oanimaux[0:2]
oanimaux[0:3]
oanimaux[0:]
oanimaux[1:]
59
Listes - Tranches
oLorsqu'aucun indice n'est indiqué à gauche ou à droite du symbole :,
Python prend par défaut tous les éléments depuis le début ou tous les
éléments jusqu'à la fin respectivement.
oOn peut aussi préciser le pas en ajoutant un symbole : supplémentaire
et en indiquant le pas par un entier.
oL'accès au contenu d'une liste fonctionne sur le modèle suivant :
liste[début:fin:pas].
Exemple:
oanimaux[0:3:2]
ox = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
ox[::1]
ox[::2]
ox[::3]
ox[1:6:3] 60
Listes – fonctions len(), range() et list()
oL'instruction len() vous permet de connaître la longueur d'une liste: le
nombre d'éléments que contient la liste.
oL'instruction range() est une fonction spéciale en Python qui génère des
nombres entiers compris dans un intervalle.
oLorsqu'elle est utilisée en combinaison avec la fonction list(), on obtient
une liste d'entiers.
oL'instruction range() fonctionne sur le modèle range([début,] fin[, pas]).
Les arguments entre crochets sont optionnels.
Exemple:
olen(animaux)
olen([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
olist(range(10))
olist(range(0, 5))
olist(range(2, -2, -1))
olist(range(10,0))
olist(range(10,0,-1))
61
Listes de listes
oIl est possible de construire des listes de listes. Cette fonctionnalité peut
parfois être très pratique.
Exemple:
ocat1 = ["girafe", 4]
ocat2 = ["tigre", 2]
ocat3 = ["singe", 5]
oensemble = [cat1, cat2, cat3]
ochaque sous-liste contient une catégorie d'animal et le nombre
d'animaux.
oPour accéder à un élément de la liste, on utilise l'indiçage habituel.
ensemble[0]
oPour accéder à un élément de la sous-liste, on utilise un double
indiçage.
ensemble[0] [1]
62
Minimum, maximum et somme d'une liste
oLes fonctions min(), max() et sum() renvoient respectivement le
minimum, le maximum et la somme d'une liste passée en argument
Exemple:
oliste1 = list(range(10))
o sum(liste1)
omin(liste1)
omax(liste1)
oAttention toutefois à ne pas mélanger entiers et floats d'une part avec
une liste d'autre part, car cela renvoie une erreur.
Exemple:
omin(liste1, 3, 4)
oSoit on passe plusieurs entiers et / ou floats en argument, soit on passe
une liste unique.
63
Problème avec les copies de listes
oUn comportement de Python qui peut paraitre anormal lorsqu'on copie
une liste.
Exemple:
oliste1 = list(range(5))
oliste2 = liste1
oliste1[3] = -50
oliste1
oliste2
oLa modification de liste1 a modifié également liste2.
oCela vient du fait que Python a effectué la copie de liste par référence.
oLes deux listes pointent vers le même objet dans la mémoire.
oPour pallier ce problème et faire en sorte que liste2 soit bien distincte de
liste1, on peut utiliser la fonction list().
oliste2 = list(liste1)
o Cette technique ne fonctionne que pour des listes à une dimension (c'est-à-dire pour des listes qui ne contiennent que des éléments de type 64 simple
comme des entiers, des floats, des chaînes de caractères et des booléens), mais pas pour des listes de listes.
Méthodes et listes
oEn Python, on peut considérer chaque variable comme un objet sur
lequel on peut appliquer des méthodes.
oUne méthode est simplement une fonction qui utilise et/ou agit sur l'objet
lui-même, les deux étant connectés par un point.
oLa syntaxe générale est de la forme : objet.méthode()
Exemple:
oliste1 = [1, 2]
[Link](3)
oliste1
oLa méthode .append() est liée à liste1 qui est un objet de type liste.
oLa méthode modifie l'objet liste en lui ajoutant un élément.
65
Exercices d’application
Exercice 1:
oSoit les trois lignes de code suivantes :
oliste1 = list(range(10, 15))
ovar = 0
ovar2 = 10
oPrédire le comportement de chaque instruction ci-dessous, sans les
recopier dans un script ni dans l'interpréteur Python :
oprint(liste1[2])
oprint(liste1[var])
oprint(liste1[var2])
oprint(liste1["var"])
oLorsque rien ne s’affiche ou dans le cas d’une erreur, identifier pourquoi.
66
Exercices d’application
Exercice 2:
oConstituer une liste semaine contenant les sept jours de la semaine.
oÀ partir de cette liste, comment récupérer seulement les cinq premiers
jours de la semaine d'une part, et ceux du week-end d'autre part ?
Utiliser pour cela l'indiçage.
oChercher une autre méthode pour arriver au même résultat (en utilisant
un autre indiçage).
oTrouver deux manières pour accéder au dernier jour de la semaine.
oInverser les jours de la semaine en une commande.
67
Boucles et comparaisons-Boucles for
Principe:
oEn programmation, on est souvent amené à répéter plusieurs fois une
instruction.
oLes boucles vont nous aider à réaliser cette tâche répétitive de manière
compacte et efficace.
oImaginer par exemple qu’on veut afficher les éléments d'une liste les uns
après les autres.
oSi la liste ne contient que 4 éléments, ceci est faisable mais si elle en
contienne 100 voire 1 000 cela devient très difficile !
oPour remédier à cela, il faut utiliser les boucles.
Exemple:
Créer et afficher la liste des mois de l'année
68
Boucles et comparaisons-Boucles for
Réponse:
omois =["janvier", "février", "mars", "avril", "mai","juin","juillet", "août",
"septembre", "octobre","novembre", "décembre"]
ofor moisx in mois: print(moisx)
oLa variable moisx est appelée variable d'itération qui prend
successivement les différentes valeurs de la liste mois à chaque itération
(ou tour) de boucle.
oOn peut choisir le nom que l'on veut pour cette variable créée par Python
la première fois que la ligne contenant le for est exécutée (si elle existait
déjà son contenu serait écrasé).
oUne fois la boucle terminée, cette variable d'itération moisx n'est pas
détruite et conserve la dernière valeur de la liste.
69
Boucles et comparaisons-Boucles for
oLes : signifie que la boucle for attend un bloc d'instructions.
oOn appelle ce bloc d'instructions le corps de la boucle.
oOn indique à Python que ce bloc commence et se termine par
l'indentation du bloc d'instructions.
oOutre une meilleure lisibilité, les deux-points et l'indentation sont
formellement requis en Python.
oLes développeurs recommandent une indentation par l'utilisation de
quatre espaces.
for animal in animaux[1:3]:
Exemple:
print(animal)
ofor animal in animaux:
o print(animal) for i in [1, 2, 3]:
o print(animal*2) print(i)
oprint("C'est la fin de la liste !") Remplacer par for i in range(4):
puis par i in list(range(4)):
Expliquer ? 70
Nommage de la variable d'itération
oSi on itère sur les indices, on peut appeler la variable d'itération i
oSi on itère sur une liste comportant des chaînes de caractères (ou tout
autre type de variable), utiliser un nom explicite pour la variable
d'itération.
Exemple :
for prenom in [“Adil", “Amina", "Jalal"]:
for proportion in [0.12, 0.53, 0.07, 0.28]:
71
Itération sur les indices ou les éléments
Exemple :
par une itération sur ses indices
for i in range(4):
print(animaux[i])
par une itération sur les éléments
for animal in animaux:
print(animal)
Remarque:
La mesure du temps d'exécution de ces deux méthodes montre que l'itération sur
les éléments est la méthode la plus rapide.
Exercice:
Utiliser les focntions range(), len() et enumerate() avec une f-string pour afficher
la liste des animaux comme suit avec 2 méthodes :
L'animal i est un(e) élément 72
Itération sur les indices ou les éléments
Réponse :
Méthode 1
for i in range(len(animaux)):
print(f"L'animal {i} est un(e) {animaux[i]}")
Méthode 2
for i, animal in enumerate(animaux):
print(f"L'animal {i} est un(e) {animal}")
73
Comparaisons
oPython est capable d'effectuer toute une série de comparaisons entre le
contenu de deux variables, telles que :
oExemple :
x=5
x == 5 animal = "tigre"
x > 10 animal != "tig"
"a" < "b" 74
Boucles while
oUne alternative à l'instruction for couramment utilisée en informatique est
la boucle while.
oUne série d'instructions est exécutée tant qu'une condition est vraie.
oIl est nécessaire d'indenter le bloc d'instructions correspondant au corps
de la boucle.
oNécessite trois éléments pour fonctionner:
o Initialisation de la variable d'itération avant la boucle
o Test de la variable d'itération associée à l'instruction while
o Mise à jour de la variable d'itération dans le corps de la boucle
Exemple :
i=1
while i <= 4:
print(i)
i=i+1
75
Itération sur les indices ou les éléments
Exercice :
Ecrire et tester une boucle while qui affiche le message suivant :
Entrez un entier supérieur à 10 :, tant que cet entier est inférieur à 10
Utiliser la fonction input() pour saisir cet entier
76