Vous êtes sur la page 1sur 12

Chapitre 5 : Les Listes en Python

Chapitre 5 : Les listes en python


Objectifs de la leçon :

L'objet de cette leçon est de savoir :


• Construire des listes.
• Accéder à leurs éléments.
• Les modifier,

Tout ça pour faciliter l'écriture de nos programmes. (En général, l'utilisation des listes évite la
création de multiples variables).

Prérequis :
Leçon 1, leçon 2 et leçon 3

1. Définition :
Jusqu’à présent, nous n’avons stocké qu’une seule valeur à la fois dans nos variables.
Les listes sont un type de données très particulier au sens où elles représentent des données
composées ou combinées. Une liste est en effet par définition composée d’une suite de valeur
ou d’éléments.

Une liste est une structure de données qui contient une série de valeurs. Python autorise
la construction de liste contenant des valeurs de types différents (par exemple entier et chaîne
de caractères), ce qui leur confère une grande flexibilité. Une liste est déclarée par une série de
valeurs (n'oubliez 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. En voici quelques exemples :

2. Création d’une liste :


Il est possible de créer une liste de plusieurs façons différentes :

1. En utilisant des parenthèses vides.


inventaire = list() # on vient de créer une liste appelée « inventaire »
print (type(inventaire)) # affiche <class ‘list’> ça prouve que « inventaire » est une liste

Réalisé par : Bassem Boughzala (ISET Rades) Page : 1/12


Chapitre 5 : Les Listes en Python

Si on écrit :
print(inventaire) #ça affiche [] indiquant qu’il s’agit d’une liste vide.

2. Pour créer une liste et l’initialiser en même temps :


inventaire = [1, 5, "voiture", 2.6]
print(inventaire)

3. Pour initialiser la liste avec les mêmes éléments :


inventaire = [0]*5 #permet de créer une liste contenant cinq 0.
print(inventaire)

4. Il est possible aussi de créer une liste avec des valeurs croissantes (ou décroissantes) à
travers la méthode « range ».
inventaire = range(1,5) # permet de créer une liste composée de 4 éléments de 1 à 4.
for valeur in inventaire :
print(valeur)

Si on écrit :
inventaire = range(5,20,3)
for valeur in inventaire :
print(valeur)

On aura une liste composée des éléments suivants :


[5, 8, 11, 14, 17]

Attention : si on écrit print(inventaire) on aura comme résultat :


Range(5, 20, 3)

3. Utilisation d’une liste :


Un des gros avantages d'une liste est que vous pouvez appeler ses éléments par leur position.
Ce numéro est appelé indice (ou index) de la liste.

Réalisé par : Bassem Boughzala (ISET Rades) Page : 2/12


Chapitre 5 : Les Listes en Python

Remarque : Soyez très attentifs au fait que les indices d'une liste de n éléments commence
à 0 et se termine à n-1.

Exemple :

Soit la liste suivante :

inventaire = ["Arc", "Epée", "Bouclier", "Potion", "Flèches", "Tunique"]

• Print(inventaire[4]) → affiche : Flèches


• Print(inventaire[ : ]) → affiche : toute la liste
• print(inventaire[:2]) → affiche : les deux premiers ["Arc", "Epée"]
• print(inventaire[3:]) → affiche : enlève les 3 premiers et affiche le reste ["Potion",
"Flèches", "Tunique"]
• print(inventaire[-3]) → affiche le 3ème élément à partir de la fin c-à-d : Potion
• print(inventaire[2:4]) → affiche : ["Bouclier", "Potion"] affiche les éléments de l’indice
2 jusqu’à l’indice 3 (celui d’indice 4 sera exclu).

4. Opérations sur les listes :


1. Les listes supportent l’opérateur + pour la concaténation et * pour la duplication :

2. Il est toujours possible d’ajouter un élément à une liste soit avec la fonction append soit
avec l’opérateur + :

liste =[]
liste.append("AAA")
liste.append("BBB")
print(liste) → affiche : [‘AAA’, ‘BBB’]

ou bien :

liste =[]
liste = liste + ["CCC"]
liste = liste + ["DDD"]
liste += ["EEE"]+['FFF'] → équivalent à : liste = liste + ["EEE"]+['FFF']
print(liste) → affiche : [‘CCC’, ‘DDD’, ‘EEE’, ‘FFF’]

3. Il est possible d’indexée la liste avec des nombres négatifs selon le modèle suivant :

Réalisé par : Bassem Boughzala (ISET Rades) Page : 3/12


Chapitre 5 : Les Listes en Python

Les indices négatifs reviennent à compter à partir de la fin. Leur 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. L'avant-dernier élément a lui l'indice -2, l'avant-avant
dernier l'indice -3, etc.

4. Un 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 inclus à l'élément n+1 exclu). On dit alors qu'on
récupère une tranche de la liste. On peut aussi préciser le pas en ajoutant un symbole deux-
points supplémentaire et en indiquant le pas par un entier liste[début:fin:pas]

Exemple :

liste = [1, 2, 3, 4, 5, 6, 7, 8, 9]
print(liste[2:7:2]) → affiche comme résultat : [3, 5, 7]
print(liste[ : :2]) → affiche comme résultat : [1, 3, 5, 7, 9]

5. L'instruction len() vous permet de connaître la longueur d'une liste, c'est-à-dire le nombre
d'éléments que contient la liste.

6. Les fonctions range() et list() : L'instruction range() est une fonction spéciale en
Python qui génère des nombres entiers compris dans un intervalle. Lorsqu'elle est utilisée
en combinaison avec la fonction list(), on obtient une liste d'entiers.

print(list(range(0,5))) → affiche :[0, 1, 2, 3, 4]


print(list(range(0,1000,200))) → affiche :[0, 200, 400, 600, 800]
print(list(range(2,-2,-1))) → affiche :[2, 1, 0, -1]
print(list(range(10,0))) → affiche : []

7. Il est possible de modifier un élément de la liste à travers son indice.

liste = ["AAA", "BBB","CCC", "DDD"]


print(liste[:])
liste[2] = "ZZZ"
print(liste[:])

Réalisé par : Bassem Boughzala (ISET Rades) Page : 4/12


Chapitre 5 : Les Listes en Python

8. Il est possible d’insérer un élément dans la liste à un endroit bien précis en utilisant la
fonction insert(position, élément_à_inséré) :

liste = [1, 4, 14, 5 , 18, -2, 10]


print(liste [:])
liste.insert(4,11)
print(liste [:])

9. Pour supprimer un élément on utilise la méthode remove :

inventaire = ["AAA", "BBB","CCC", "DDD"]


inventaire.remove("CCC")
print(inventaire) → affiche : [’AAA’, ’BBB’, ’DDD’]

Remarque : il est possible aussi de supprimer un élément de la liste à l’aide de la fonction


« del » qui ne fait pas partie des méthodes de la classe « list ».

inventaire = ["AAA", "BBB","CCC", "DDD"]


del inventaire[1]
print(inventaire) → affiche : [’AAA’, ’CCC’, ’DDD’]

10. Pour chercher un élément dans la liste et retourner son indice on peut utiliser la méthode
index :

inventaire = ["AAA", "BBB","CCC", "DDD"]


print("indice : ",inventaire.index("BBB")) → affiche : indice : 1

11. Pour trier une liste on utilise la méthode sort(). Les éléments de la liste doivent être de
même type sinon le tri ne sera pas effectué.

inventaire = ["aaa", "xxx", "ccc","yyy","fff", "ddd", "bbb"]


inventaire.sort()
print(inventaire[:])

12. Pour inverser les éléments de la liste on doit utiliser la méthode reverse() :

inventaire = ["aaa", "bbb", "ccc","ddd"]


inventaire.reverse()
print(inventaire[:])

Réalisé par : Bassem Boughzala (ISET Rades) Page : 5/12


Chapitre 5 : Les Listes en Python

Remarque : pour trier une liste dans l’ordre décroissant on doit utiliser la méthode sort()
suivie de la méthode reverse().

13. Pour compter le nombre d’occurrence d’un élément on utilise la méthode count() :

inventaire = ["aaa", "xxx", "aaa","yyy","fff", "aaa", "bbb"]


print ("Nombre d'occurrence de la chaine 'aaa' = ",inventaire.count("aaa"))

14. La méthode clear() permet de supprimer tous les éléments de la liste.

inventaire = ["aaa", "bbb", "ccc","ddd"]


inventaire.clear()
print(inventaire[:]) → affiche : []

Remarque : il est possible aussi de vider la liste de la manière suivante : inventaire[ : ] = []

15. La méthode split(séparateur) permet de scinder une chaîne en plusieurs éléments et


de créer une liste composée de ces éléments. « Le séparateur » indique la position de la
coupure dans la chaine.

chaine = "Bonjour à tous"


print(type(chaine))
chaine = chaine.split(" ")
print(chaine)
print(type(chaine))

16. La méthode join(liste) fait le cas inverse de la méthode split. C-à-d elle permet de
passer d’une liste vers une chaine de caractères.

inventaire = [str(10), str(200) , str(30000)]


phrase=" ".join(inventaire)
print (phrase)

Remarque : Lorsqu’on manipule une liste, on agit directement sur elle au niveau de la
mémoire et toute modification au niveau de la liste d’origine affecte directement la copie.

Réalisé par : Bassem Boughzala (ISET Rades) Page : 6/12


Chapitre 5 : Les Listes en Python

liste1 = ['A', 'B', 'C', 'D']


liste2 = liste1
print("Liste1 : ", liste1[:])
print("Liste2 : ", liste2[:])
liste2.append('E')
print("Liste1 : ", liste1[:])
print("Liste2 : ", liste2[:])

On remarque bien que « liste2 » fait référence à « liste1 » il s’agit d’un clone. Pour que
« liste2 » soit une copie de « liste1 » et non pas un clone, on doit faire appelle au module
copy et utiliser la méthode « deepcopy() ».

import copy
liste1 = ['A', 'B', 'C', 'D']
liste2 = copy.deepcopy(liste1)
print("Liste1 : ", liste1[:])
print("Liste2 : ", liste2[:])
liste2.append('E')
print("Liste1 : ", liste1[:])
print("Liste2 : ", liste2[:])

17. La méthode extend() permet de concaténer 2 listes (c’est l’équivalent de l’opérateur


« + » entre les listes).

liste1 = ['A', 'B', 'C']


liste2 = ['D', 'E']
print(liste1[:])
liste1.extend(liste2)
print(liste1[:])

18. Lors de l’affichage des éléments de la liste il est possible d’utiliser la fonction
« enumarate(nom_liste) » qui permet d’afficher chaque fois l’indice de l’élément
ainsi que sa valeur.

Réalisé par : Bassem Boughzala (ISET Rades) Page : 7/12


Chapitre 5 : Les Listes en Python

liste = ["aaa", "bbb", "ccc", "ddd"]


for objet in enumerate(liste):
print(objet)

Le résultat obtenu est un ensemble de tuples. Chaque tuple est composée de l’indice de
l’élément ainsi que sa valeur. Si on veut récupérer l’indice on peut procéder de cette
manière :

liste = ["aaa", "bbb", "ccc", "ddd"]


for indice_objet, valeur_objet in enumerate(liste):
print(" Elément d’indice {} → {} ".format(indice_objet, valeur_objet))

19. Listes de listes : Il est tout à fait possible de construire des listes de listes. Cette
fonctionnalité peut parfois être très pratique. Par exemple :

enclos1 = ['girafe', 4]
enclos2 = ['tigre', 2]
enclos3 = ['singe', 5]
zoo = [enclos1, enclos2, enclos3]
print(zoo)

Dans cet exemple, chaque sous-liste contient une catégorie d'animal et le nombre d'animaux
pour chaque catégorie. L’exécution de ce script donne comme résultat :

Pour accéder à un élément de la liste, on utilise l'indiçage habituel :

print(zoo[1]) → affiche : ['tigre', 2]

Pour accéder à un élément de la sous-liste, on utilise un double indiçage :

print(zoo[1][0]) → affiche : tigre


print(zoo[1][1]) → affiche : 2

Réalisé par : Bassem Boughzala (ISET Rades) Page : 8/12


Chapitre 5 : Les Listes en Python

20. Permutation des éléments : La permutation des éléments de la liste est une liste de tous les
cas possibles. Si vous avez besoin de cette fonctionnalité, inutile de réinventer la roue, le
module « itertools » s'en occupe pour vous.

from itertools import permutations


liste1 = ['a', 'b', 'c']
liste2=list(permutations(liste1))
print(liste2)

Résultat :

21. Permutation d'une liste de liste : Pour afficher tous les cas possibles d'une liste elle-même
composée de liste, on doit utiliser l'outil « product » du module « itertools » :
from itertools import product
print(list(product(['a', 'b'], ['c', 'd'])))

Résultat :

5. Les listes et les chaines de caractères :


Les chaînes de caractères peuvent être considérées comme des listes.

animaux = "girafe tigre"


print(animaux)
print(len(animaux))

Nous pouvons donc utiliser certaines propriétés des listes comme les tranches :

animaux = "girafe tigre"


print(animaux[0:4]) # affiche :'gira'
print(animaux[9:]) # affiche : 'gre'
print(animaux[:-2]) # affiche : 'girafe tig'

A l’inverse des listes, les chaînes de caractères présentent toutefois une différence notable,
ce sont des listes non modifiables. Une fois définie, vous ne pouvez plus modifier un de
ses éléments. Le cas échéant, Python renvoie un message d’erreur :

animaux = "girafe tigre"


print(animaux[4])
animaux[4] = "F"

Réalisé par : Bassem Boughzala (ISET Rades) Page : 9/12


Chapitre 5 : Les Listes en Python

Par conséquent, si vous voulez modifier une chaîne, vous êtes obligés d’en construire une
nouvelle. Pour cela, n’oubliez pas que les opérateurs de concaténation (+) et de duplication
(*) peuvent vous aider. Vous pouvez également générer une liste, qui elle est modifiable,
puis revenir à une chaîne.

Exercices :
1. Soient les listes suivantes :

t1 = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
t2 = ['Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet', 'Août', 'Septembre',
'Octobre', 'Novembre', 'Décembre']

Écrire un script python qui crée une nouvelle liste t3. Celle-ci devra contenir tous les
éléments des deux listes en les alternant, de telle manière que chaque nom de mois soit
suivi du nombre de jours correspondant : ['Janvier',31,'Février',28,'Mars',31, etc.].

2. Écrivez un programme qui affiche « proprement » tous les éléments d'une liste. Si on
l'appliquait par exemple à la liste t2 de l'exercice ci-dessus, on devrait obtenir :

Janvier Février Mars Avril Mai Juin Juillet Août Septembre Octobre Novembre
Décembre

3. Constituez une liste « semaine » contenant les 7 jours de la semaine.

• À partir de cette liste, comment récupérez-vous seulement les 5 premiers jours de la


semaine d'une part, et ceux du week-end d'autre part ? Utilisez pour cela l'indiçage.
• Cherchez un autre moyen pour arriver au même résultat (en utilisant un autre indiçage).
• Trouvez deux manières pour accéder au dernier jour de la semaine.
• Inversez les jours de la semaine en une commande.

4. Écrivez un script python qui recherche le plus grand élément présent dans une liste
donnée. Par exemple, si on l'appliquait à la liste [32, 5, 12, 8, 3, 75, 2, 15], ce programme
devrait afficher :

Le plus grand élément de cette liste a la valeur 75.

5. Écrivez un script python qui analyse un par un tous les éléments d'une liste de nombres
(par exemple celle de l'exercice précédent) pour générer deux nouvelles listes. L'une
contiendra seulement les nombres pairs de la liste initiale, et l'autre les nombres impairs.
Par exemple, si la liste initiale est celle de l'exercice précédent, le programme devra

Réalisé par : Bassem Boughzala (ISET Rades) Page : 10/12


Chapitre 5 : Les Listes en Python

construire une liste pairs qui contiendra [32, 12, 8, 2], et une liste impairs qui contiendra
[5, 3, 75, 15].

6. Écrivez un script python qui analyse un par un tous les éléments d'une liste de mots (par
exemple : ['Jean', 'Maximilien', 'Brigitte', 'Sonia', 'Jean-Pierre', 'Sandra'] pour générer
deux nouvelles listes. L'une contiendra les mots comportant moins de 6 caractères,
l'autre les mots comportant 6 caractères ou davantage .

7. Créez 4 listes hiver, printemps, ete et automne contenant les mois correspondants à ces
saisons. Créez ensuite une liste saisons contenant les listes hiver, printemps, été et
automne. Prévoyez ce que renvoient les instructions suivantes, puis vérifiez-le dans
l'interpréteur :

• saisons[2]
• saisons[1][0]
• saisons[1:2]
• saisons[:][1]. Comment expliquez-vous ce dernier résultat ?

8. Affichez la table de multiplication par 9 en une seule commande avec les


instructions range() et list().

9. Répondez à la question suivante en une seule commande. Combien y a-t-il de nombres


pairs dans l'intervalle [2, 10000] inclus ?

10. Ecrire un script python qui concatène deux listes d’entiers « L1 » et « L2 » dans une
liste « L3 » sans les doublons.

Exemple :

Si L1 = [13, 15, 12, 17, 15] et L2 = [18, 15, 14, 13, 19, 20] alors le programme crée la
liste L3 = [13, 15, 12, 17, 18, 14, 19, 20] et l’affiche.

11. Ecrire un programme Python qui permet d’échanger le premier et le dernier mot.
Exemple si s = “Pyhon est un langage de programmation”, le programme renvoie la
chaine s2 = “programmation est un langage de Pyhon”. On suppose que le texte est
bien formé (un espace après chaque ponctuation et aucun espace avant la ponctuation)

12. Écrire une fonction en Python qui prends en argument une chaine de caractères s et qui
renvoie le nombre de minuscules et de majuscules contenu dans la chaine s.

13. Créer une fonction Python nommée toutEnMajuscule() qui permet de transformer une
liste de chaines en une autre liste constituée de chaines en majuscule.

Réalisé par : Bassem Boughzala (ISET Rades) Page : 11/12


Chapitre 5 : Les Listes en Python

Résumé :

Réalisé par : Bassem Boughzala (ISET Rades) Page : 12/12

Vous aimerez peut-être aussi