Les Listes
Les Listes
Les Listes
LES LISTES
Exemple :
Syntaxe :
nom_liste[indice]
Exemple :
>>> 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 :
Ch[i : j] Extraire la sous-liste de l’élément i (inclus) à l’élément j (exclu) pas par défaut égal 1
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 :
2. La duplication :
Exemple :
3. Test d'appartenance :
Exemple :
>>> ville=["Guelmim","Tantan","Agadir","Laayoun"]
>>> if "Guelmim" in ville:
... print("Ok")
... else:
... print("Non OK")
Ok
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
>>> 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))
Syntaxe :
nom_liste . méthode(paramètres)
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.
>>> 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]
>>> 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]
>>> 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
[]
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
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.
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
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 :
Correction