Les Listes

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 10

Algorithmique et Programmation

LES LISTES

I- DÉFINITION D’UNE liste


De façon plus générale, les listes permettent de stocker et classer un grand nombre de données.
En python une liste (tableau dynamique) :
• Permet de manipuler une séquence d'objets modifiable.
• Contient un nombre non fixé d’éléments, de manière ordonnée.
• Peut contenir des éléments de type différents(hétérogènes).

II- Création d'une liste :


En Python, on déclare (défini/crée) une liste avec les crochets [], les éléments sont séparés par une
virgule (,).

Exemple :

>>> #creation d’une liste vide


>>> L=[]
>>> #creation d’une liste des entiers
>>> L1=[1 ,25 ,30]
>>> #creation d’une liste hétérogène
>>> L2=['Ahmed',20,True,[12.75 ,0]]
>>> print(L1)
[1, 25, 30]
>>> print(L2)
['Ahmed', 20, True, [12.75, 0]]

Autres méthodes de création d'une liste :


Exemple :

>>> #creation d’une liste avec la classe list


>>> L1=list()
>>> #creation et initialisation d'une liste
>>> L1=[0]*4
>>> print(L1)
[0, 0, 0, 0]
>>> L1=list("Rachid")
>>> print(L1)
['R', 'a', 'c', 'h', 'i', 'd']
>>> L2=list(range(5));print(L2)
[0, 1, 2, 3, 4]

III- Accès aux éléments d'une liste


Pour accéder aux éléments d'une liste, on utilise les mêmes méthodes (index ou indice, découpage
en tranches ou Slicing [d : f : pas] que pour accéder aux caractères d'une chaîne.
Les indices peuvent être positive ou négative.

CPGE Bab Essahra Guelmim | PSI | Prof : Rachid Ilougui Page | 1


Algorithmique et Programmation Les listes

Syntaxe :
nom_liste[indice]

Exemple :

Considérons la liste suivante des matières que vous étudiez :

>>> m= [ 'MATH', 'PHY', 'SI', 'INFO', 'FR', 'EN', 'TRA', 'SPO']

MATH PHY SI INFO FR EN TRA SPO


0 1 2 3 4 5 6 7
-8 -7 -6 -5 -4 -3 -2 -1

>>> m=[ 'MATH', 'PHY', 'SI', 'INFO', 'FR', 'EN', 'TRA', 'SPO']
>>> print(m[0])
MATH
>>> print(m[-1])
SPO
>>> print(m[2:6])
['SI', 'INFO', 'FR', 'EN']
>>> print(m[-6:-3])
['SI', 'INFO', 'FR']
>>> print(m[4:])
['FR', 'EN', 'TRA', 'SPO']
>>> print(m[:6])
['MATH', 'PHY', 'SI', 'INFO', 'FR', 'EN']
>>> print(m[1:6:2])
['PHY', 'INFO', 'EN']
>>> print(m[:])
['MATH', 'PHY', 'SI', 'INFO', 'FR', 'EN', 'TRA', 'SPO']

Syntaxe :

Soit ch est une liste

Ch[i : j] Extraire la sous-liste de l’élément i (inclus) à l’élément j (exclu) pas par défaut égal 1

Ch[i : j : k] Extraire la sous-liste de l’élément i (inclus) à l’élément j (exclu) pas égal k

Ch[i : ] Extraire la sous-liste depuis l’élément i (inclus) jusqu'à la fin de la liste.

Ch[ : j] Extraire la sous-liste de début indice 0 jusqu'à l'indice j (exclu).

Ch[ : ] Extraire la sous-liste de début jusqu'à la fin de la liste

CPGE Bab Essahra Guelmim | PSI | Prof : Rachid Ilougui Page | 2


Algorithmique et Programmation Les listes

IV- Les opérations sur les listes


Les opérations à appliquer à une liste :

opérations Explication
+ La concaténation de deux listes
* La duplication d'une liste (Répétition)
in ou not in Test d'appartenance renvoie True ou False

1. La concaténation :

On peut concaténer deux listes avec l’opérateur (+) (comme pour les chaines de
caractères).

Exemple :

>>> #Concaténation de deux listes


>>> L1=[1,2,3]
>>> L2=[4,5,6,7]
>>> L3=L1+L2
>>> print(L3)
[1, 2, 3, 4, 5, 6, 7]
>>> #Ajouter un élément à la liste L3
>>> L3=L3+[8]
>>> print(L3)
[1, 2, 3, 4, 5, 6, 7, 8]

2. La duplication :

On peut dupliquer(multiplier) une listes avec l’operateur (*) (nom_liste * n) où n est un


entier.

Exemple :

>>> #Duplication d'une liste n fois


>>> L1=[1,2,3]
>>> L1=L1*3
>>> print(L1)
[1, 2, 3, 1, 2, 3, 1, 2, 3]

3. Test d'appartenance :

Nous pouvons facilement déterminer si un élément appartient à une liste à l’aide de


l’opérateur in.

Exemple :

>>> ville=["Guelmim","Tantan","Agadir","Laayoun"]
>>> if "Guelmim" in ville:
... print("Ok")
... else:
... print("Non OK")
Ok

CPGE Bab Essahra Guelmim | PSI | Prof : Rachid Ilougui Page | 3


Algorithmique et Programmation Les listes

Remarque :
Il est également possible d’utiliser l’opérateur "not in" pour vérifier la non-appartenance d’un
élément à une liste.

V- Parcours de liste
Le parcours d’une liste c’est l’accès séquentiel à ses éléments de début jusqu'à fin de la liste.
Les fonctions range(), len() et la boucle for permettent le parcours d’une liste d’une manière
relativement simple.

Exemple1 :

>>> ville=["Guelmim","Tantan","Agadir","Laayoun"]
>>> nb_elements=len(ville)
>>> for i in range(nb_elements):
... print(ville[i])
Guelmim
Tantan
Agadir
Laayoun

Exemple2 :

>>> ville=["Guelmim","Tantan","Agadir","Laayoun"]
>>> for i in ville
... print(i)
Guelmim
Tantan
Agadir
Laayoun

VI- Les fonctions sur les listes


• La fonction len() : On utilise la fonction len() pour obtenir le nombre d'éléments d'une liste.
• La fonction min() : On utilise la fonction min() pour obtenir le minimum d'une liste.
• La fonction max() : On utilise la fonction max() pour obtenir le maximum d'une liste.
• La fonction sorted() : On utilise la fonction sorted() pour obtenir une liste triée.
• La fonction del() : On utilise la fonction del() pour supprimer une liste.
Exemple :

>>> nombre=[12,78,79,15,14,11,187,15]
>>> print(len(nombre))
8
>>> print(min(nombre))
11
>>> print(sorted(nombre))
[11, 12, 14, 15, 78, 79, 187]
#supprimer la liste
>>> print(del(nombre))

CPGE Bab Essahra Guelmim | PSI | Prof : Rachid Ilougui Page | 4


Algorithmique et Programmation Les listes

VII- Les méthodes sur les listes


Sous Python, les listes sont des objets, et nous pouvons donc leur appliquer un certain nombre de
méthodes dont les plus importantes sont : sort, append, reverse, index, remove …

Syntaxe :
nom_liste . méthode(paramètres)

• La fonction append() : Permet d’ajouter un élément à la fin de la liste


• La fonction insert() : Permet d’ajouter un élément dans une position donnée
• La fonction reverse() : Permet d’inverser l'ordre des éléments d’une liste.
• La fonction index() : Permet de retrouver l’index d’un élément dans la liste
• La fonction remove() : Permet de supprimer un élément d’une liste
• La fonction clear() : Permet de vider une liste

Méthode Type de retour Description


List() list Renvoie une liste vide
L.append(x) None Ajoute un élément x à la fin d'une liste
L.insert(i,x) None Modifier L en insérant x dans la position de l'indice i
L.extend(seq) None Modifier L en lui ajoutant les éléments de l'itérable seq
L.count() int Retourne le nombre d'occurrences de x dans la liste L
Retourne l'indice du premier élément de L égale à x
L.index(x) int
(ValueError si x n'existe pas)
L.index(x,n) int Retourne l'indice de la nième occurrence de x dans L
L.pop() item Renvoie le dernier élément et la supprime de la liste
L.remove() None Supprime la première occurrence de x dans L
L.reverse() None Modifier L en renversant l'ordre de ses éléments
L.sort() None Modifier L en triant par ordre croissant ses éléments

Exercices

1. Ecrire une fonction moyenne(liste_note) qui calcule la moyenne des éléments d'une liste de notes
passée en paramètre.
2. Ecrire une fonction liste_diviseur(N) renvoyant la liste des diviseurs d’un entier positif N.
3. Écrire une fonction chcercher(liste,val) qui prend en paramètres une liste et une valeur puis retourne
une valeur booléenne(True/False) si la valeur val existe dans une liste.
4. Ecrire une fonction note_eleve(liste_note) qui prend en paramètre une liste, puis affiche le nombre
de notes entrées, la note la plus élevée, la note la plus basse, et la moyenne de la liste.
5. Définir une fonction insertMilieu(valeur,liste) qui prend en paramètre une valeur et une liste et qui
insère la valeur au milieu de la liste puis retourne la liste.

CPGE Bab Essahra Guelmim | PSI | Prof : Rachid Ilougui Page | 5


Algorithmique et Programmation Les listes

IX- Techniques de Slicing pour modifier une liste


On peut utiliser le "découpage en tranches" ou Slicing pour modifier, insérer ou supprimer des
éléments dans une liste à l'aide du seul opérateur [début : fin : pas ].

1. Modification d'un élément ou d'une sous-liste :

>>> list_A=[1,5,6,True,"Nom","Age",False,15.78,16.67]
>>> list_A
[1, 5, 6, True, 'Nom', 'Age', False, 15.78, 16.67]
>>> list_A[0]=67
>>> list_A
[67, 5, 6, True, 'Nom', 'Age', False, 15.78, 16.67]
>>> list_A[2:4]=[True,"Adresse"]
>>> list_A
[67, 5, True, 'Adresse', 'Nom', 'Age', False, 15.78, 16.67]
>>> list_A[:3]=[False,97,20]
>>> list_A
[False, 97, 20, 'Adresse', 'Nom', 'Age', False, 15.78, 16.67]
>>> list_A[7:]=[False,97,20]
>>> list_A
[False, 97, 20, 'Adresse', 'Nom', 'Age', False, False, 97,
20]

2. Insertion d'un élément ou d'une sous-liste :

>>> list_A=[1,True,"Age",16.67]
>>> list_A
[1, True, 'Age', 16.67]
>>> #insertion au début
>>> list_A[0:0]=[78]
>>> list_A
[78, 1, True, 'Age', 16.67]
>>> #insertion à la fin
>>> list_A[len(list_A):len(list_A)]=[78]
>>> list_A
[78, 1, True, 'Age', 16.67, 78]
>>> #insertion au milieu
>>> list_A[len(list_A)//2:len(list_A)//2]=[79]
>>> list_A
[78, 1, True, 79, 'Age', 16.67, 78]
>>> #insertion d'une sous liste à lindice 1
>>> list_A[1:1]=["Laayoun","Guelmim","Tiznit"]
>>> list_A
[78, 'Laayoun', 'Guelmim', 'Tiznit', 1, True, 79, 'Age', 16.67, 78]

CPGE Bab Essahra Guelmim | PSI | Prof : Rachid Ilougui Page | 6


Algorithmique et Programmation Les listes

3. Suppression d'un un élément ou d'une sous-liste

>>> list_A=[1,5,6,True,"Nom","Age",False,15.78,16.67]
>>> list_A
[1, 5, 6, True, 'Nom', 'Age', False, 15.78, 16.67]
>>> del(list_A[2])
>>> list_A
[1, 5, True, 'Nom', 'Age', False, 15.78, 16.67]
>>> list_A[1:5]=[]
>>> list_A
[1, False, 15.78, 16.67]
>>> list_A[2:]=[]
>>> list_A
[1, False]
>>> list_A[:]=[]
>>> list_A
[]

X- Une liste en mode compréhension


On peut définir une liste en décrivant la séquence contenue dans la liste. CÀD générer des listes
d’une manière très concise, sans avoir à utiliser la structure répétitive pour remplir une structure de
données (Liste, Dictionnaire, Tuple, …).

Syntaxe sans condition :

Liste =[expression for x in Liste]

Syntaxe avec condition :

Liste =[expression for x in Liste if condition]

Exemple liste en compréhension sans condition :

>>> #Creation liste de nombre avec liste par compréhension


>>> list_A=[i for i in rannge(10)]
>>> print(list_A)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> list_A=[i*i for i in range(1,10)]
>>> print(list_A)
[1, 4, 9, 16, 25, 36, 49, 64, 81]

Exemple liste en compréhension avec condition :

>>> #Creation liste de nombre avec liste par compréhension


>>> list_A=[i for i in rannge(1,10) if i%2==0]
>>> print(list_A)
[2, 4, 6, 8]

CPGE Bab Essahra Guelmim | PSI | Prof : Rachid Ilougui Page | 7


Algorithmique et Programmation Les listes

XI- Copie d'une liste


Les types de copie d'un objet :
• Copie simple par l'instruction d'affectation.
• Copie par l'opérateur de Slicing [].
• Copie profonde(deepcopy) par le module copy.

1. Copie par l'instruction d'affectation

L'affectation de la forme listeB=listeA, ne crée pas une copie de la liste1, mais les deux listes
listeA et listeB pointe vers la même adresse(référence).
Nb: la modification ultérieure des éléments de l’une des deux listes affectera aussi l’autre.

Exemple :

>>> list_A=[9,36,81,144,255,324]
>>> list_B=list_A
>>> list_B.append(656)
>>> print(list_A)
[9, 36, 81, 144, 255, 324, 656]
>>> print(list_B)
[9, 36, 81, 144, 255, 324, 656]
>>> print("référence: ",id(list_A)," : ",id(list_B))
référence: 2308171891520 : 2308171891520

2. Copie par l'opérateur de Slicing [ ]:

Si l’on souhaite effectuer une copie(physique) d’une liste listeA qu’on puisse modifier sans
affecter listeB, il faut effectuer une affectation de la forme suivante :
listeB=listeA[:] ou listeB=list(listeA) ou listeB=[i for i in listeA]

Exemple :

>>> list_A=[9,36,81,144,255,324]
>>> list_B=list_A[:]
>>> list_B.remove(36)
>>> print(list_A)
[9, 36, 81, 144, 255, 324]
>>> print(list_B)
[9, 81, 144, 255, 324]
>>> print("référence: ",id(list_A)," : ",id(list_B))
référence: 2280937948160 : 2280937948928

Remarque :
l'opérateur de Slicing [:] permet juste de dupliquer les éléments du 1er niveau de la liste.

CPGE Bab Essahra Guelmim | PSI | Prof : Rachid Ilougui Page | 8


Algorithmique et Programmation Les listes

Exemple :

>>> list_A=[9,36,81,[144,255],324]
>>> list_B=list_A[:]
>>> list_B[3][0]=1
>>> print(list_A)
[9, 36, 81, [1, 255], 324]
>>> print(list_B)
[9, 36, 81, [1, 255], 324]
>>> print("référence: ",id(list_A)," : ",id(list_B))
référence: 3076171892608 : 3076172203264

3. Copie profond par le module copy :

Pour résoudre le problème de Slicing on va faire une copie complète avec la méthode
deepcopy du module copy.

Schéma :

Exemple :

>>> import copy


>>> list_A=[9,36,81,[144,255],324]
>>> list_B=copy.deepcopy(list_A[:])
>>> list_B[3][0]=1
>>> print(list_A)
[9, 36, 81, [144, 255], 324]
>>> print(list_B)
[9, 36, 81, [1, 255], 324]
>>> print("référence: ",id(list_A)," : ",id(list_B))
référence: 1888450413824 : 1888451831360

CPGE Bab Essahra Guelmim | PSI | Prof : Rachid Ilougui Page | 9


Algorithmique et Programmation Les listes

Correction

CPGE Bab Essahra Guelmim | PSI | Prof : Rachid Ilougui Page | 10

Vous aimerez peut-être aussi