Structures de données en Python
Les listes
CPGE Moulay Youssef
Rabat
MPSI
2024 / 2025
0 / 22
Introduction Définition et Création d’une liste Accès aux valeurs d’une liste Tranchage (slicing) Création d’une copie d’une liste Autres opérations
Plan
1 Introduction
2 Définition et Création d’une liste
3 Accès aux valeurs d’une liste
4 Tranchage (slicing)
5 Création d’une copie d’une liste
6 Autres opérations
1 / 22
Les listes
Introduction Définition et Création d’une liste Accès aux valeurs d’une liste Tranchage (slicing) Création d’une copie d’une liste Autres opérations
Introduction
Les variables, telles que nous les avons vues, ne permettent de stocker qu’une seule
donnée à la fois. Or, pour de nombreuses données, comme cela est souvent le cas, des
variables distinctes seraient beaucoup trop lourdes à gérer.
Heureusement, Python proposent des structures de données permettant de stocker
l’ensemble de ces données dans une variable commune. Ainsi, pour accéder à ces valeurs
il suffit de parcourir la variable en utilisant les indices.
2 / 22
Les listes
Introduction Définition et Création d’une liste Accès aux valeurs d’une liste Tranchage (slicing) Création d’une copie d’une liste Autres opérations
Définition et Création d’une liste
Définition 1
Une liste est une structure de données qui permet de stocker plusieurs valeurs mais de type
hétérogène, simple où composé.
On peut construire une liste sous Python de plusieurs manières :
Par la donnée explicite des éléments, entre crochets, séparés par des virgules :
1 L =[] # cration d ' une liste vide
2
3 L =[1 ,25 ,30] # creation d ' une liste des entiers
4
5 L =[ ' Ahmed ' ,20 , True ,[12.75 ,0]] # creation d ' une liste heterogene
3 / 22
Les listes
Introduction Définition et Création d’une liste Accès aux valeurs d’une liste Tranchage (slicing) Création d’une copie d’une liste Autres opérations
Par concaténation de listes ( à l’aide de +) :
1 L =[10 , 12 , 33] + [14 , 52 , 42 , 56]
2 print ( " L = " ,L )
L = [10 , 12 , 33 , 14 , 52 , 42 , 56]
A partir d’un itérable en utilisant le mot clé list :
1 L = list ( ' bonjour ')
2 print ( " L = " ,L )
L = [’b’, ’o’, ’n’, ’j’, ’o’, ’u’, ’r’]
1 L = list ( range (10) )
2 print ( " L = " ,L )
L = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
4 / 22
Les listes
Introduction Définition et Création d’une liste Accès aux valeurs d’une liste Tranchage (slicing) Création d’une copie d’une liste Autres opérations
Par compréhension :
syntaxe :
1 L =[ f ( x ) for x in iterable if condition ]
Où f(x) est une fonction dépendant ou pas de x, iterable est une séquence qu’on peut
itérer, et l’instruction ’if condition’ est optionnelle.
Exemple :
1 L =[ i for i in range (10 ,0 , -1) ]
2 print ( " L = " ,L )
L = [10 , 9 , 8 , 7 , 6 , 5 , 4 , 3 , 2 , 1]
1 L =[ i **2 for i in range (10) if i %3==0]
2 print ( " L = " ,L )
L = [0 , 9 , 36 , 81]
5 / 22
Les listes
Introduction Définition et Création d’une liste Accès aux valeurs d’une liste Tranchage (slicing) Création d’une copie d’une liste Autres opérations
Exercice 1 :
Écrire une fonction liste_aléatoire(n) qui reçoit en paramètre un entier n et qui de
retourne une liste contenant n entiers générés aléatoirement et compris entre 0 et 20.
1 # solution 1
2 import random
3 def liste_alea ( n ) :
4 L =[]
5 for i in range ( n ) :
6 L = L +[ random . randint (0 ,20) ]
7 return L
8
9 # solution 2
10 import random
11 def liste_alea ( n ) :
12 return [ random . randint (0 ,20) for i in range ( n ) ]
6 / 22
Les listes
Introduction Définition et Création d’une liste Accès aux valeurs d’une liste Tranchage (slicing) Création d’une copie d’une liste Autres opérations
Exercice 2 :
Ecrire une fonction diviseurs(n) qui reçoit en paramètre un entier n et qui de retourne une
liste de ses diviseurs.
1 # solution 1
2 def diviseurs ( n ) :
3 L =[]
4 for i in range (1 , n +1) :
5 if n % i ==0:
6 L = L +[ i ]
7 return L
8
9 # solution 2
10 def diviseurs ( n ) :
11 return [ i for i in range (1 , n +1) if n % i ==0]
7 / 22
Les listes
Introduction Définition et Création d’une liste Accès aux valeurs d’une liste Tranchage (slicing) Création d’une copie d’une liste Autres opérations
Accès aux valeurs d’une liste
On peut accéder aux valeurs de la liste en indiquant l’indice ou les indices entre crochets
qui peuvent être positifs ou bien négatifs :
Par exemple, considérons la liste suivante :
1 m =[ ' MATH ' , ' PHY ' , ' SI ' , ' INFO ' , ' FR ' , ' EN ' , ' TRA ' , ' SPO ']
1 print ( m )
[’MATH’ , ’PHY’ , ’SI’ , ’INFO’ , ’FR’ , ’EN’ , ’TRA’ , ’SPO’]
1 print ( m [1])
PHY
1 print ( m [10])
IndexError : list index out of range
1 m [ -1]
SPO 8 / 22
Les listes
Introduction Définition et Création d’une liste Accès aux valeurs d’une liste Tranchage (slicing) Création d’une copie d’une liste Autres opérations
Tranchage (slicing)
On peut créer une nouvelle liste en extrayant certains éléments d’une liste. Pour extraire
les éléments d’indice entre d inclus et f exclus avec un pas p, on utilise L[d :f :p]
Par exemple :
1 L =[0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9]
1 print ( L [1: 7: 3])
[1, 4]
1 print ( L [1: 7: -1])
[]
1 print ( L [7: 1: -1])
[7, 6, 5, 4, 3, 2]
9 / 22
Les listes
Introduction Définition et Création d’une liste Accès aux valeurs d’une liste Tranchage (slicing) Création d’une copie d’une liste Autres opérations
Création d’une copie d’une liste
L’affectation n’est pas suffisante pour créer une copie d’une liste. Voici ce qui se passe,
lorsqu’on utilise une affectation simple :
1 T =[1 ,5 ,17]
2 L=T
1 L [0]=20
2 print ( 'L = ' ,L )
3 print ( 'T = ' ,T )
L = [20 , 5 , 17]
T = [20 , 5 , 17]
10 / 22
Les listes
Introduction Définition et Création d’une liste Accès aux valeurs d’une liste Tranchage (slicing) Création d’une copie d’une liste Autres opérations
Donc pour créer une copie d’un liste unidimensionnelle, on utilise la méthode copy
1 T =[1 ,5 ,17]
2 L = T . copy ()
3 L [0]=20
4 print ( 'L = ' ,L )
5 print ( 'T = ' ,T )
L = [20 , 5 , 17]
T = [1 , 5 , 17]
11 / 22
Les listes
Introduction Définition et Création d’une liste Accès aux valeurs d’une liste Tranchage (slicing) Création d’une copie d’une liste Autres opérations
Attention, si la liste est multidimensionnelle, la méthode copy ne va pas marcher. Voyons
ce qui se passera dans cet exemple.
1 T =[[1 ,3] ,[6 ,9]]
12 / 22
Les listes
Introduction Définition et Création d’une liste Accès aux valeurs d’une liste Tranchage (slicing) Création d’une copie d’une liste Autres opérations
Attention, si la liste est multidimensionnelle, la méthode copy ne va pas marcher. Voyons
ce qui se passera dans cet exemple.
1 T =[[1 ,3] ,[6 ,9]]
2 L = T . copy ()
13 / 22
Les listes
Introduction Définition et Création d’une liste Accès aux valeurs d’une liste Tranchage (slicing) Création d’une copie d’une liste Autres opérations
1 T =[[1 ,3] ,[6 ,9]]
2 L = T . copy ()
3 L [1][0]=20
4 print ( 'L = ' ,L )
5 print ( 'T = ' ,T )
6 # L = [[1 , 3] , [20 , 9]]
7 # T = [[1 , 3] , [20 , 9]]
14 / 22
Les listes
Introduction Définition et Création d’une liste Accès aux valeurs d’une liste Tranchage (slicing) Création d’une copie d’une liste Autres opérations
Comme solution donc, on va réaliser un copie profonde à l’aide de la méthode deepcopy
du module copy
1 from copy import deepcopy
2 T =[[1 ,3] ,[6 ,9]]
15 / 22
Les listes
Introduction Définition et Création d’une liste Accès aux valeurs d’une liste Tranchage (slicing) Création d’une copie d’une liste Autres opérations
Comme solution donc, on va réaliser un copie profonde à l’aide de la méthode deepcopy
du module copy
1 from copy import deepcopy
2 T =[[1 ,3] ,[6 ,9]]
3 L = deepcopy ( T )
16 / 22
Les listes
Introduction Définition et Création d’une liste Accès aux valeurs d’une liste Tranchage (slicing) Création d’une copie d’une liste Autres opérations
Comme solution donc, on va réaliser un copie profonde à l’aide de la méthode deepcopy
du module copy
1 from copy import deepcopy
2 T =[[1 ,3] ,[6 ,9]]
3 L = deepcopy ( T )
4 L [0][1]=20
5 print ( 'L = ' ,L )
6 print ( 'T = ' ,T )
7 # L = [[1 , 20] , [6 , 9]]
8 # T = [[1 , 3] , [6 , 9]]
17 / 22
Les listes
Introduction Définition et Création d’une liste Accès aux valeurs d’une liste Tranchage (slicing) Création d’une copie d’une liste Autres opérations
Autres opérations
Soit L1 et L2 deux listes tels que :
1 L1 =[0 , 1 , 2 , 3 , 4]
2 L2 =[ 5 , 6 , 7 , 8 , 9]
Concaténation de deux listes :
1 L = L1 + L2
2 print ( " L = " ,L )
L= [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Répétition d’une liste :
1 L = L1 *2
2 print ( " L = " ,L )
L= [0, 1, 2, 3, 4, 0, 1, 2, 3, 4]
18 / 22
Les listes
Introduction Définition et Création d’une liste Accès aux valeurs d’une liste Tranchage (slicing) Création d’une copie d’une liste Autres opérations
Taille d’une liste :
1 n = len ( L1 )
2 print ( " la taille de L1 est " ,n )
la taille de L1 est 5
Test d’appartenance :
1 print (3 in L1 )
True
Test de non appartenance :
1 print (3 not in L1 )
False
19 / 22
Les listes
Introduction Définition et Création d’une liste Accès aux valeurs d’une liste Tranchage (slicing) Création d’une copie d’une liste Autres opérations
1 L1 =[0 , 1 , 2 , 3 , 4]
Parcourir les éléments d’une liste :
1 for elt in L1 :
2 print ( elt , end = ' ')
0 1 2 3 4
1 for i in range ( len ( L1 ) ) :
2 print ( L1 [ i ] , end = ' ')
0 1 2 3 4
Maximum et Minimum d’une liste :
1 print ( ' le maximum de L1 est ' , max ( L1 ) )
2 print ( ' le minimum de L1 est ' , min ( L1 ) )
le maximum de L1 est 4
le minimum de L1 est 0 20 / 22
Les listes
Introduction Définition et Création d’une liste Accès aux valeurs d’une liste Tranchage (slicing) Création d’une copie d’une liste Autres opérations
Le tableau ci-dessous présente d’autres méthodes de manipulations des listes sous
Python :
21 / 22
Les listes
Introduction Définition et Création d’une liste Accès aux valeurs d’une liste Tranchage (slicing) Création d’une copie d’une liste Autres opérations
Exercice d’application
En utilisant les méthodes décrites dans le tableau précédent :
1 Créer une liste vide L.
2 Ajouter les éléments suivants à la fin de la liste : 12, 5, 6, 10.
3 Ajouter à la liste L les éléments de la liste T = [0, 2, 3, 10].
4 Insérer l’élément 7 dans la position 2.
5 Supprimer l’élément 10.
6 Supprimer le dernier élément.
7 Supprimer l’élément se trouvant à l’indice 3.
8 Trouver l’indice de l’élément 5.
9 Compter le nombre d’occurrence de 10.
10 Trier la liste L.
11 Inverser l’ordre de la liste L.
22 / 22
Les listes