Les listes

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']