logo

Les tableaux

Les listes

Définition

Une liste est un type de variable qui peut contenir plusieurs valeurs.

Les différentes valeurs sont rangées dans les « cases » de la liste numérotées à partir de 0.

Dans le programme ci-dessous nous déclarons une liste qui contient trois chaînes de caractères et nous les faisons afficher.

maListe=["toto","tata","titi"]
print maListe[0]
print maListe[1]
print maListe[2]

 

Comment cela fonctionne-t-il ?

Pour définir une liste nous mettons les différents éléments entre crochets et séparés par des virgules.

Pour accéder aux éléments du tableau nous écrivons le nom de la variable suivie de crochets avec le numéro de la case voulue.

Ainsi, maListe[0], maListe[1] et maListe[2] sont trois variables qui correspondent aux 3 cases du tableau.

Liste de même élément

On peut créer une liste composée d'un même élément avec la synthaxe suivante :

ma_liste=[0]*5
print(ma_liste)

Parcourir les éléments d'une liste en Python

En Python l'instruction for est conçue pour parcourir les listes.

maListe=["toto","tata","titi"]
for element in maListe:
	print element

 

Repérer un élément dans une liste et l'instruction in

L'instruction in permet de tester si un élément est dans une liste et répond par un booléen (True ou False)

On peut aussi utiliser l'instruction not in pour tester qu'un élément n'est pas dans une liste.

Exemple d'un programme qui test si 0 appartient à une liste.

nombres=[1,2,3,10]
print(0 in nombres)
print(0 not in nombres)

 

Modification d'une case d'un tableau

Pour modifier la valeur d'une case d'une liste, on procède comme avec une variable classique, par exemple l'instruction ci-dessous modifie le contenu de la case numérotée 1 et remplace la chaîne de caractères "tata" par la chaîne de caractères "tutu".

maListe=["toto","tata","titi"]
maListe[1]="tutu"
print maListe

 

Ajout d'un élément à un tableau

Comme une chaîne de caractères, une liste est un objet du langage Python, c'est à dire qu'une liste contient des propriétés et des méthodes qui sont accessibles par la notation pointée.

En particulier il existe une méthode pour ajouter un élément à la fin d'un tableau : la méthode append. Nous utilisons cette fonctionnalité dans le programme suivant :

pairs=[]
for i in range(0,21,2):
	pairs.append(i)
print(pairs)

 

Comment cela fonctionne-t-il ?

Au départ, la variable pairs reçoit une liste vide représenté par [].

A chaque tour de boucle, la méthode append, utilisée en écrivant pairs.append(i);, permet d'ajouter la valeur de i à la fin de la liste.

Lorsque la boucle est terminée, la liste contient tous les nombres pairs de 0 à 20.

Copie de listes

Si on copie la liste liste1 dans liste2 alors toute modification dans une liste se répercutera dans l'autre liste.

liste1=["toto","tata","titi"]
liste2=liste1
liste2.append("tutu")
print "liste1=",liste1
print "liste2=",liste2

Si on veut pouvoir modifier une liste sans modifier l'autre, il suffit d'écrire liste2=liste1[:].

liste1=["toto","tata","titi"]
liste2=liste1[:]
liste2.append("tutu")
print "liste1=",liste1
print "liste2=",liste2

 

Nombre d'éléments d'un tableau

Pour connaître le nombre d'éléments d'une liste il faut utiliser la propriété len de l'objet liste, exactement comme pour connaître le nombre de caractères d'une chaîne.

Dans le programme ci-dessous nous parcourrons la liste de nombres pour doubler toutes les valeurs.

nombres=[1,5,7,12,19,21];
for i in range(len(nombres)):
	nombres[i]=nombres[i]*2
print nombres

 

Comment cela fonctionne-t-il ?

Les éléments de la liste nombres sont numérotées de 0 à len(nombres), nous parcourons tous les éléments de la liste grâce à la boucle dans laquelle i varie de 0 à len(nombres).

Pour chacun des éléments de la liste, nous remplaçons la valeur par son double.

Transformer une chaine de carectères en liste

Parfois il peut être utile de transformer une chaine de caractère en liste. Cela est possible avec la méthode split.

ma_chaine = "Numerique,Science,Informatique"
ma_liste=ma_chaine.split(",")
print(ma_liste)

 

Autres méthodes

Il existe plusieurs autres méthodes pour manipuler les listes en Python, voir le tableau :

Methode Description
del liste[n] Supprimme l'élément qui est en position n dans liste.
liste.remove("a") Supprime les éléments qui ont la valeur "a" dans liste.
liste.count("a") Compte le nombre de "a" dans liste.
liste.index("a") Repère la première position de "a" dans liste.
liste1 + liste2 Les éléments de liste2 se rajoutent à liste1.
liste[-1] Donne le dernier élément de liste.
liste[:n] Donne la sous-liste formée des n premiers éléments de liste.
liste[n:] Donne la sous-liste privée des n premiers éléments de liste.

Création de liste par compréhension

La compréhension de liste est une expression qui permet de construire une liste à partir de tout autre type itérable (liste, chaîne de caractères…). Le résultat obtenu est toujours une liste.

Exemples et synthaxes

Les tableaux

Nous avons déjà vu les liste, des tableaux à une dimension, nous allons maintenant nous pencher sur les tableaux à deux dimensions.

Nous allons définir ces tableaux à l’aide de liste de listes.

Création de tableaux

Supposons que nous voulions créer un tableau de 10 lignes et de 5 colonnes contenant des 0.

Nous pouvons utiliser la syntaxe mon_tableau=[[0,0,0,0,0,0,0,0,0,0],[0…..]……] mais qui est pénible.

Il existe une méthode plus simple :

mon_tableau=[[0]*10]*5
print(mon_tableau)

Recherche d’un élément dans un tableau

Soit T un tableau à deux dimensions :

T=[[1,2,3,4],[5,6,7,8],[9,10,11,12]]

Il s’agit de trois listes d’entiers. L’élément T[i][j] correspond au jème élément de la ième liste. Attention, on compte à partir de 0.

T=[[1,2,3,4],[5,6,7,8],[9,10,11,12]]
print("T[1][0]=",T[1][0])
print("T[2][3]=",T[2][3])

 

Parcourir un tableau

Pour parcourir un tableau, il faut utiliser une double boucle : la première pour séparer les sous-listes et la deuxième pour développer chaque sous-liste.

T=[[1,2,3,4],[5,6,7,8],[9,10,11,12]]
for i in range(len(T)):
	for j in range(len(T[0])):
		print(T[i][j])

Pour avoir un affichage ressemblant à un tableau :

T=[[1,2,3,4],[5,6,7,8],[9,10,11,12]]
for i in range(len(T)):
	for j in range(len(T[0])):
		print(T[i][j],end='')
	print("")

Tri d’un tableau

Pour classer dans un tableau à deux dimensions, il faut choisir un critère de classement.

Exemple

T=[["jean",14],["Paul",8],["Emma",12],["Luc",7],["Lise",15]]

Ici, l’on peut classer par ordre alphabétique ou par notes croissantes ou décroissantes. Il va falloir préciser si l’on trie suivant l’élément 0 de la liste ou l’élément 1.

La méthode sorted est ici adaptée, avec la syntaxe suivante :

T=[["jean",14],["Paul",8],["Emma",12],["Luc",7],["Lise",15]]
tri=sorted(T, key=lambda note: note[1])
print(tri)