Les listes
Une liste est une "collection" d'objets indicés.
Les exemples ci-dessous illustrent la façon dont les éléments sont indicés.
Vous retiendrez également de ces exemples les diverses méthodes de parcours des éléments de la liste.
# une liste de nombres
a = [2, 10, 5//3, 7.2, 8]
print("Longueur de la liste a : ", len(a) )
print("La liste : ", a)
On obtient :
Longueur de la liste a : 5
La liste : [2, 10, 1, 7.2, 8]
# une liste de nombres
a = [2, 10, 5//3, 7.2, 8]
print("Contenu, élément un à un : ", a[0],a[1],a[2],a[3], a[4] )
print('\n')
print('Parcours des éléments avec une boucle sur les indices :')
for i in range(len(a)) :
print(a[i],end=', ')
print('\n')
On obtient :
Contenu, élément un à un : 2 10 1 7.2 8
Parcours des éléments avec une boucle sur les indices :
2, 10, 1, 7.2, 8,
# une liste de nombres
a = [2, 10, 5//3, 7.2, 8]
print('Parcours des éléments avec une boucle sans les indices :')
for x in a :
print(x,end='; ')
print('\n')
print('Parcours des éléments avec indices et éléments :')
for i,x in enumerate(a) :
print("Le terme d'indice {} est {}.".format(i,x) )
On obtient :
Parcours des éléments avec une boucle sans les indices :
2; 10; 1; 7.2; 8;
Parcours des éléments avec indices et éléments :
Le terme d'indice 0 est 2.
Le terme d'indice 1 est 10.
Le terme d'indice 2 est 1.
Le terme d'indice 3 est 7.2.
Le terme d'indice 4 est 8.
On retiendra que les indices, comme pour les chaînes de caractères, commencent à zéro et non à un.
Le dernier indice est donc len(a)-1
et non len(a)
.
Autre exemple :
def f(x) :
return 5*x**2+3*x+1
# une liste contenant divers objets :
a = [2, 'coucou', f, f(7)]
print("Longueur de la liste a : ", len(a) )
print("La liste : ", a)
print('\n')
print('Les éléments de la liste :')
for i, x in enumerate(a) :
print("Le terme d'indice {} est {}.".format(i,x))
print('\n')
print('Les types des éléments de la liste :')
for i, x in enumerate(a) :
print( "Le type du terme d'indice {} est {}.".format(i,type(x)) )
print('\n')
On obtient :
Longueur de la liste a : 4
La liste : [2, 'coucou', function f at 0x7f29b4ab8bf8, 267]
Les éléments de la liste :
Le terme d'indice 0 est 2.
Le terme d'indice 1 est coucou.
Le terme d'indice 2 est function f at 0x7f29b4ab8bf8.
Le terme d'indice 3 est 267.
Les types des éléments de la liste :
Le type du terme d'indice 0 est class 'int'.
Le type du terme d'indice 1 est class 'str'.
Le type du terme d'indice 2 est class 'function'.
Le type du terme d'indice 3 est class 'int'.
Une liste peut donc contenir des objets de types différents.
Modifier les éléments d'une liste.
Modifier la valeur d'un élément d'indice connu.
L = ['ba', 'be', 'bi', 'bo', 'bu']
L[2] = 'fifi'
print(L)
La liste L est modifiée :
['ba', 'be', 'fifi', 'bo', 'bu']
Effacer un élément d'indice connu.
L = ['ba', 'be', 'bi', 'bo', 'bu']
del(L[3])
print(L)
L'élément d'indice 3 est ainsi effacé :
['ba', 'be', 'bi', 'bu']
On peut également utiliser pop
:
L = ['ba', 'be', 'bi', 'bo', 'bu']
L.pop(3)
print(L)
On obtient :
['ba', 'be', 'bi', 'bu']
Avec pop, on peut en fait également récupérer la valeur de l'élément supprimé en même temps :
L = ['ba', 'be', 'bi', 'bo', 'bu']
a = L.pop(3)
print(L)
print(a)
On obtient :
['ba', 'be', 'bi', 'bu']
bo
Récupérer l'indice d'un élément.
Si on l'on veut connaître l'indice d'un élément présent dans la liste L, on peut utiliser index
:
L = ['ba', 'be', 'bi', 'bo', 'bu']
k = L.index('bo')
print(k)
Ce qui donne :
3
Si l'élément a plusieurs occurrences dans la liste L, L.index()
renverra le plus petit indice correspondant.
L = ['ba', 'be', 'bi', 'bo', 'bu', 'bo', 'by', 'bo']
k = L.index('bo')
print(k)
Ce qui donne :
3
Si l'élément n'est pas présent dans la liste, python renvoie une erreur :
L = ['ba', 'be', 'bi', 'bu', 'by']
k = L.index('bo')
print(k)
donne :
ValueError: 'bo' is not in list
Pour éviter une erreur, on peut utiliser count qui permet de retourner le nombre d'éléments de valeur donnée
présents dans la liste.
L = ['ba', 'bo', 'be', 'bi', 'bu', 'by', 'bo']
compteur = L.count('bo')
print("Nombre de 'bo' présents dans la liste L : ",compteur)
donne :
Nombre de 'bo' présents dans la liste L : 2
et pour éviter une erreur en cas d'absence de la valeur :
L = ['ba', 'bo', 'be', 'bi', 'bu', 'by', 'bo']
if L.count('bo') > 0 :
print("Premier indice de 'bo' dans la liste L : ", L.index('bo') )
else :
print("Aucun 'bo' dans cette liste.")
Effacer un élément d'indice inconnu.
Avec remove
, on peut supprimer la première occurrence d'une valeur donnée dans la liste.
Attention, python retourne une
erreur si la valeur n'était pas présente.
L = ['ba', 'bo', 'be', 'bi', 'bu', 'by', 'bo']
if L.count('bo') > 0 :
L.remove('bo')
print("Liste L après remove : ", L )
else :
print("La liste ne contenait aucun 'bo'.")
donne :
Liste L après remove : ['ba', 'be', 'bi', 'bu', 'by', 'bo']
Ajouter un élément à une liste
append()
On ajoute un élément à une liste L avec L.append(valeur à ajouter). La nouvelle valeur
est insérée en fin de liste (et devient donc le dernier élément de la liste après modification) :
L = ['ba', 'bo', 'be', 'bi', 'bu', 'by', 'bo']
L.append('foo')
print(L)
L.append(7)
print(L)
L'affichage obtenu :
['ba', 'bo', 'be', 'bi', 'bu', 'by', 'bo', 'foo']
['ba', 'bo', 'be', 'bi', 'bu', 'by', 'bo', 'foo', 7]
insert()
On peut insérer un élément à une position précise dans une liste avec insert(position, valeur à insérer) :
L = ['ba', 'bo', 'be', 'bi', 'bu', 'by', 'bo']
L.insert(0,'foo')
print(L)
L.insert(2,'fii')
print(L)
L.insert(len(L), 'un ajout à la fin')
print(L)
L'affichage obtenu :
['foo', 'ba', 'bo', 'be', 'bi', 'bu', 'by', 'bo']
['foo', 'ba', 'fii', 'bo', 'be', 'bi', 'bu', 'by', 'bo']
['foo', 'ba', 'fii', 'bo', 'be', 'bi', 'bu', 'by', 'bo', 'un ajout à la fin']
extend()
On peut ajouter les éléments d'une liste M à une liste L :
L = ['ba', 'bo', 'be', 'bi', 'bu', 'by']
M = [ 4.8, 9.3, 7.2]
L.extend(M)
print(L)
L'affichage obtenu :
['ba', 'bo', 'be', 'bi', 'bu', 'by', 4.8, 9.3, 7.2]
Concaténation de listes.
Il est possible de concaténer deux listes pour en former une troisième.
L = ['ba', 'bo', 'be', 'bi', 'bu', 'by']
M = [ 4.8, 9.3, 7.2]
N = L+M
P = M+L
print("Liste N : ", N)
print("Liste P : ", P)
L'affichage obtenu :
Liste N : ['ba', 'bo', 'be', 'bi', 'bu', 'by', 4.8, 9.3, 7.2]
Liste P : [4.8, 9.3, 7.2, 'ba', 'bo', 'be', 'bi', 'bu', 'by']
Copier une liste.
Il est important de comprendre la différence entre une instruction L= M
dans laquelle M est une liste et
cette même instruction lorsque M est par exemple de type int, float, str.
Ces différences et les "pièges" à éviter sont
à découvrir ici.
Changer de type.
Il pourra parfois être utile de fabriquer une liste à partir d'un objet qui n'en est pas un.
Nous nous contenterons ici d'un seul exemple.
t = 'Zorglub'
print(t)
t = list(t)
print(t)
L'affichage obtenu :
Zorglub
['Z', 'o', 'r', 'g', 'l', 'u', 'b']