Académique Documents
Professionnel Documents
Culture Documents
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 :
Si on écrit :
print(inventaire) #ça affiche [] indiquant qu’il s’agit d’une liste vide.
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)
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 :
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 :
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.
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é) :
10. Pour chercher un élément dans la liste et retourner son indice on peut utiliser la méthode
index :
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é.
12. Pour inverser les éléments de la liste on doit utiliser la méthode reverse() :
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() :
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.
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.
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[:])
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.
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 :
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 :
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.
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 :
Nous pouvons donc utiliser certaines propriétés des listes comme les tranches :
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 :
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
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 :
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
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 ?
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ésumé :