Principe

Supposons que, dans un jeu, il faille stocker les scores de cinq joueurs, disons :

15 ; 22 ; 120 ; 12 ; 37

pour cela, je peux :

score1 = 15
score2 = 22
score3 = 120
score4 = 12
score5 = 37

ce qui présente plusieurs inconvénients : la saisie est longue et les opérations sur ces valeurs seront pénibles ; imaginez qu'il y ait 100 valeurs à stocker et que l'on souhaite ensuite en faire la somme : il faudrait taper quelque chose comme

total = score1 + score2 + score3 + score4 + score5 + score6 + score7 + ...

(les ... devant être complétés à la main par le programmeur !)

scores = [15, 22, 120, 12, 37]

Le calcul de la somme se ferait alors ainsi :

somme = 0
for score in scores:
    somme = somme + score

La boucle for permet ici à la variable score de prendre successivement chaque valeur de la liste scores.

Présentation rapide

Visionnez la vidéo ci-dessous.

Vous pouvez mettre en pause la vidéo quand vous le souhaitez pour tester les commandes dans la fenêtre placée en dessous (remarque : inutile d'utiliser print() pour voir les valeurs des variables en mode Console, par exemple taper maListe[3] puis Entrée suffit ; pas besoin de print(maListe[3])).

Mais... ça me rappelle quelque chose !

Ou en tout cas, cela le devrait !

Sur le principe, les listes se rapprochent beaucoup des suites de nombres.

Ainsi, parlant de la liste 15 ; 22 ; 120 ; 12 ; 37, je pourrais écrire en mathématiques :

u0 = 15 ; u1 = 22 ; u2 = 120 ; u3 = 12 ; u4 = 37.

J'ai ici choisi de numéroter les termes de la suite à partir de l'indice 0, ce qui est fréquent en mathématiques.

De même, la commande :

maliste = [15, 22, 120, 12, 37]

définit une liste de valeurs numérotées :

valeurs15221201237
indices01234

Remarquez que la cinquième valeur a pour indice 4.

Le premier élément d'une liste a toujours pour indice 0.

Il y a néanmoins une différence essentielle entre les suites et les listes : les listes ont forcément un nombre fini d'éléments !

Création d'une liste par "extension"

Je vous invite à tester les commandes qui suivent dans cette console Python :

Comme nous l'avons déjà vu, je peux créer une liste en énumérant toutes ses valeurs, séparées par des virgules, entre crochets :
maliste = [15, 22, 120, 12, 37]

Remarque : une liste peut contenir autre chose que des nombres, comme une liste de courses :

ma_liste_de_courses = ["Beurre", "Pain", "Fromage"]

ou même une liste d'objets de différentes natures (peu utilisé en pratique) :

une_liste = ["Carottes", 25, 3.14, "Choux", -1.3]

ou même rien du tout (nous verrons plus tard que c'est utile !) :

liste = []

Longueur d'une liste

La longueur d'une liste peut être obtenue avec la fonction len(...) (raccourci de length : longueur en anglais) :

len(ma_liste_de_courses)

renverra 3, qui est le nombre d'éléments de la liste ["Beurre", "Pain", "Fromage"].

Accéder à un élément de la liste

Pour accéder à un élément de la liste, j'écris le nom de la liste suivie de l'indice de cet élément entre crochets :

une_liste[3]

renvoie le texte "Choux".

(en mode éditeur Python (quand nous écrivons des programmes), l'affichage se ferait avec un print())

Modifier une valeur d'une liste

Il est possible de modifier une valeur d'indice connu.

Par exemple, si je veux modifier la troisième valeur d'une liste :

liste = [1, 4, 8, 16, 25, 36]
liste[2] = 9
liste
            

Si je veux modifier tous les éléments d'une liste, j'utiliserai une boucle for.

Dans l'exemple suivant, j'augmente toutes les valeurs de 5 :

maliste = [7, 9, 5, 10, 3]
for i in range(len(maliste)):
    maliste[i] = maliste[i] + 5
maliste

Ici len(maliste) vaut 5 donc range(len(maliste)) donnera les indices 0 à 4.

Dans la console Python ci-dessous :
  1. créez une liste (appelez-là comme bon vous semble) ;
  2. demandez l'affichage(*) de cette liste ;
  3. demandez l'affichage de la longueur de cette liste ;
  4. demandez l'affichage de son premier élément ;
  5. demandez l'affichage de son dernier élément ;
  6. modifiez la deuxième valeur de votre liste ;
  7. demandez à nouveau l'affichage de la liste pour vérifier qu'elle a bien été modifiée.
(*) en mode console, il n'y a pas besoin de print()
Je peux créer une liste ainsi :
ze_liste = [val1, val2, val3, etc.]
et récupérer un de ses éléments ainsi :
ze_liste[...]
la longueur de la liste s'obtient en tapant :
len(ze_liste)

Exercices : indices et valeurs

Suite