Les listes
Introduction
Une liste est un ensemble d’objets mis dans un ordre précis. Elles sont définies entre crochets et les éléments sont séparés par une virgule.
Syntaxe
L’identificateur (le nom) d’une liste suit les mêmes règles que les identificateurs de variables. On définit une liste vide comme suit:
ma_liste = []
Sinon, une liste peut comporter des elements quelconques :
L = [2, "hello", 3.5, True, 20, 23]
On peut créer une liste contenant n fois le même objet :
L = [0] * 4
# Donnera la liste [0, 0, 0, 0]
On peut utiliser les opérateurs +
pour la concaténation de deux
listes, et *
pour la répétition d’une liste.
T = [1, 2] * 2
# Donnera [1, 2, 1, 2]
S = ['a', 10] + [1] * 3
# Donnera ['a', 10, 1, 1, 1]
Pour la suite du cours, on considère la liste L
suivante :
# 0 1 2 3 4 5 <--- l'indice de chaque élément
L = [2, "hello", 3.5, True, 20, 23]
Les elements de la liste sont indexes a partir de 0, Pour accéder aux elements de la liste:
print(L[3]) # Affichera True
print(L[0]) # Affichera 2
print(L[1]) # Affichera hello
Attention: le premier élément correspond à l’indice 0
Modification d’un élément
On peut modifier les elements d’une liste déjà existante comme suit :
L = [1, 2, 3]
L[0] = "hello"
# La liste devient ["hello", 2, 3]
L[2] = True
# La liste devient ["hello", 2, True]
L[3] = 5
# ERREUR list index out of range.
Ajout et suppression d’élément
Lorsqu’une liste existe, il est possible d’ajouter ou enlever un élément très facilement avec les fonctions pop et append :
L = [1, 2, 3]
L.append(5) # Ajout l’élément 5 a la fin de la liste
# Donnera [1, 2, 3, 5]
L.pop(2) # Enlève l’élément d'indice 2
# Donnera [1, 2, 5]
L.pop() # Si on donne pas de paramètre, pop enlève le dernier
# Donnera [1, 2]
L = L + ['a', 'b'] # concaténation de deux listes
# Donnera [1, 2, 'a', 'b']
Taille d’une liste
Pour obtenir la taille d’une liste, on utilise la fonction len()
L = [1, 'a', True]
print(len(L)) # Affichera 3
L = [2, "hello", 3.5, True, 20, 23]
print(len(L)) # Affichera 6
Les elements d’une liste L
sont donc indexes de 0
a len(L)-1
.
Pour accéder au dernier élément d’une liste : L[len(L)-1]
L = [2, "hello", 3.5, True, 20, 23]
x = L[len(L)-1]
print(x) # Affichera 23
Indexage négatif
Pour accéder aux elements de la liste, on peut utiliser l’indexage
négatif. Dans ce cas les elements de la liste sont indexe du dernier
élément -1
, au premier -len(L)
# -6 -5 -4 -3 -2 -1
L = [2, "hello", 3.5, True, 20, 23]
print(L[-2]) # Affichera 20
L’indexage négatif revient a retrancher len(L)
de l’indice positif,
par exemple l’élément d’indice 0 peut aussi être indexer par -len(L)
.
Pour accéder au dernier élément d’une liste, on peut donc utiliser
L[-1]
au lieu de L[len(L)-1]
Méthodes et fonctions sur les listes
len(L)
permet d’obtenir le nombre d’elements d’une liste.L.append(e)
permet d’ajouter l’élémente
a la fin de la liste.L.clear()
permet de vider la liste.L.copy()
permet de faire une copy de la listeL.count(e)
permet de compter le nombre d’occurrence de l’élémente
dansL
L.extend(T)
permet d’ajouter tous les elements de la listeT
a la fin de la listeL
L.index(e)
renvoie l’indice de l’élémente
dans la listeL
. Attention, la fonction donne une erreur si l’élément n’est pas dans la liste.L.insert(i, e)
permet d’insérer l’élémente
dans l’indicei
.L.pop(i)
permet d’enlever l’élément d’indicei
et le renvoie.L.remove(e)
permet d’enlever l’élémente
de la liste si il existe. Attention, la fonction donne une erreur si l’élément n’est pas dans la listeL.reverse()
permet d’inverser l’ordre des elements dans la listeL.sort()
permet de trier les elements de la liste. Pour cela les elements doivent être du même type.
Parcours d’une liste
On peut parcourir la liste comme suit :
for i in range(len(L)):
print("l’élément d'indice", i, "est", L[i])
Ou encore :
for i in L:
print("l’élément est", i)
Remarque: Si on parcourt une liste par for x in L
, la variable x
va itérer sur les éléments de L
mais on n’a pas accès à l’indice de
chaque élément. Par contre quand on utilise for i in range(len(L))
, on
peut accéder a l’élément par L[i]
, ainsi que son indice i
.
Les tranches de listes
On peut prendre une partie d’une liste définie par un indice de début
d
, indice de fin f
, et le pas p
utilise, avec la syntaxe :
L[d:f:p]
ou L[d:f]
pour un pas de 1
Exemple
# 0 1 2 3 4 5
L = [2, "hello", 3.5, True, 20, 23]
print(L[1:3]) # Affichera ["hello", 3.5]
Si on omet l’indice de début, la tranche commencera du début de la liste. De même, si on omet l’indice de fin, la tranche finira a la fin de la liste.
print(L[3:]) # [True, 20, 23]
print(L[:2]) # [2, "hello"]
print(L[3:0:-1]) # [True, 3.5, "hello"]
print(L[::-1]) # permet d'inverser la liste
Si les indices début ou fin sont dans le mauvais ordre, on obtient une liste vide :
print(L[3:2]) # Affichera []