Une liste est une séquence de plusieurs variables groupées ensemble sous un seul nom. Au lieu d'écrire un programme avec plusieurs variables x0
, x1
, x2
, … vous pouvez définir une seule variable x
et accéder à ces éléments x[0]
, x[1]
, x[2]
, etc. Plus important encore, vous pouvez mettre d'autres expressions et variables à l'intérieur des [
crochets]
, par exemple x[i]
and x[i+1]
. Cela permet de gérer des groupes de données assez large en utilisant peu de code.
Une manière de créer une liste est d'encadrer plusieurs valeurs par des crochets et de les séparer par des virgules:
maListe = ["la première valeur dans la liste", 1999, 4.5]Ceci crée une liste
maListe
de taille 3. Chaque élément de la liste se voit attribuer un nombre appelé index: le premier élément a pour index 0, le suivant a pour index 1 et ainsi de suite. Les variables individuelles qui composent la liste ont les noms
«nomDeLaListe»[«numeroIndex»]
Donc dans cet exemple, maListe[0]
est une variable donc la valeur est la chaîne "la première valeur dans la liste"
et print(maListe[2])
affiche 4.5
. Vous pouvez aussi changer les valeurs des éléments de la liste et afficher la liste entière:
Comme vous pouvez le voir, l'élément numbers[0]
est traité comme s'il était lui-même une variable: il a une valeur et peut être changé.
truc = [2, 25, 80, 12] truc[truc[0]] = truc[3] print(truc)
truc[3]
sur le côté droit est 12
. Pour le côté gauche, truc[0]
est 2
, donc truc[truc[0]]
se réfère à la variable truc[2]
. La valeur de cette variable est mis à jour (à partir de 80
) à 12
.Ce que Python appelle une liste serait appelé un tableau (array en anglais) dans la pluspart des langages de programmation. Python a aussi quelque chose de different & plus avancé appelé tableau. |
Un erreur courante
Si vous demandez à Python d'utiliser un index qui n'existe pas, vous obtiendrez une erreur:
Dans cet exemple, puisque maListe
a une longueur de 4 et que le premier index est 0, l'index maximum est 3. Demander un index de 4, 5 ou quelque chose de plus grand génère une erreur.
Opérations courantes utiles
Longueur d'une liste: len(«liste»)
Pour déterminer le nombre d'éléments dans une liste, appelez la fonction len()
sur cette liste. Regardez comment range
est utilisé dans l'exemple suivant.
Il est courant d'utiliser len
pour écrire du code qui fonctionne sur des listes de n'importe quelle longueur comme dans l'exemple ci-dessus et l'exercice suivant.
Est-ce que les listes sont comme des chaînes?
Vous avez surement déjà remarqué que les opérations sur les listes ressemblent beaucoup à celle des chaînes: dans les deux cas on peut utiliser la fonction len()
pour obtenir leurs longueurs et les deux utilisent X[«index»]
pour extraire des éléments individuels. Les listes et les chaînes sont toutes les deux liées: elles sont de "types séquence" en Python. La différence majeure est que les caractères d'une chaîne ne peuvent pas être changés.
Pour cette raison on dit que les listes sont de type mutable et que les chaînes sont de type immutable; vous verrez un peu plus d'information à ce sujet à la leçon 17.
Concaténation et création
A la leçon 7A concernant le type str
, vous vous rappellerez qu'il est possible d'utiliser +
pour accoler (concaténer) deux chaînes ensemble. Vous pouvez faire de même avec des listes:
De même, vous pouvez utiliser le symbole *
pour étendre une liste par répétition. Ceci est utile pour créer une nouvelle liste de taille voulue.
Pour résoudre cet exercice, utilisez un des opérateurs que nous venons d'introduire et une boucle for
.
Fin de ligne: indices négatifs
Pour obtenir le dernier élément d'une liste, on utilise
«listName»[-1]
Plus généralement, L[-k]
retourne le k
ème élément depuis la fin de la liste; Python gère cela intérieurement en le traduisant en L[len(L)-k]
. Ce raccourci fonctionne pour les chaînes également!
max
et sum
La fonction max
que nous avons déjà vue s'applique également aux listes de nombres: elle retourne le plus grand nombre dans une liste. De même, la fonction sum(L)
retourne la somme des éléments de la liste L
.
Listes et boucles
Il est très courant (comme dans l'exercice précédent) de parcourir une liste pour obtenir chacune de ses valeurs. Python propose un raccourci pour faire ce type d'opération appelé boucle "for all" ou boucle "for each". Si L est une liste, le code
for x in L: «corps de la boucle»fonctionne de la manière suivante: d'abord
x
prend la première valeur de L
et le corps est exécuté; ensuite x
prend la seconde valeur de L
et le code est exécuté; ceci continue pour tous les éléments de L
.
Les boucles "for all" fonctionnent également pour les chaînes: essayez for char in "hello"
.
Bravo! Vous pouvez passer à la leçon suivante ou essayer les exercices bonus ci-dessous.
x
aura pour effet que que la fonction mystery(x)
s'exécutera infiniment?
def mystery(x): a = [0, 4, 0, 3, 2] while x > 0: x = a[x] return "Fini"