listen
Deutsch   English   Français   

12. LISTE ET TUPLE

 

 

TU APPRENDS ICI...

 

comment stocker autant de valeurs que tu le souhaites dans une liste ou un tuple et comment accéder à ces valeurs.


 

À QUOI SERT UNE LISTE?

 

Au lieu de stocker individuellement plusieurs valeurs dans différentes variables a, b, c, tu peux utiliser les listes ou les tuples. Les valeurs (éléments) d'une liste sont énumérées entre crochets, celles d'un tuple entre parenthèses rondes.
Par exemple :

Liste de couleurs:
colors = ["red", "blue", "yellow", "green"]

Liste de nombres
nb = [4, 2, 6, 3, 7]

Tuple avec les coordonnées x, y d'un point p :
p = (10, 20)

Tu accèdes aux différentes valeurs avec un index. Le premier élément a toujours l'index 0, le deuxième l'index 1, etc. Par exemple, colors[2] donne la couleur « yellow » ou p[0] le nombre 10. La différence entre les listes et les tuples réside dans le fait que les listes peuvent être modifiées pendant l'exécution du programme, alors que les tuples ne le peuvent pas.

 

 

EXEMPLES

 

Exemple 1: Parcourir une liste avec une boucle for
La tortue doit dessiner des cercles remplis avec les couleurs rouge, bleu, jaune et vert.

Tu enregistres les couleurs dans la liste colors et tu utilises une boucle for pour sélectionner les couleurs les unes après les autres.

Il existe deux manières de procéder

 

Tu parcours la liste avec un index i. Le premier élément de la liste a un index 0. Si n est le nombre d'éléments de la liste (on dit aussi la longueur de la liste), l'index i doit aller de 0 à n-1. Tu peux déterminer la longueur n de la liste avec la fonction intégréen n = len(colors).

Programme:    

from gturtle import *

makeTurtle()
colors = ["red", "blue", "yellow", "green"]
n = len(colors)

for i in range(n):
    c = colors[i]
    setPenColor(c)
    dot(40)
    forward(40)
► Copy to clipboard

Une méthode plus courte consiste à parcourir directement la liste avec

for c in colors:

ce qui permet de récupérer un élément après l’autre sans utiliser d’index.

Programme:    

from gturtle import *

makeTurtle()
colors = ["red", "blue", "yellow", "green"]

for c in colors:
    setPenColor(c)
    dot(40)
    forward(40)
► Copy to clipboard


Exemple 2: Tuples comme éléments d'une liste

À partir du coin inférieur gauche, tu dessines une maison en parcourant une liste house avec les coordonnées des points d'angle et en les reliant dans l'ordre avec la commande moveTo(x, y).

 

 

 

Programme:    

from gturtle import*

makeTurtle()
house = [(0, 60), (50, 110), (100, 60), (100, 0), (0, 0)]
for (x, y) in house:
    moveTo(x, y)
► Copy to clipboard


Exemple 3: Une liste dynamique de points

Jusqu'à présent, tu as défini les listes dans le code du programme. Mais tu peux aussi créer une liste au moment de l'exécution du programme (on dit aussi « dynamiquement »).

Dans ton programme, tu crées un nouveau point (x, y) d'un clic de souris et tu dessines toutes les lignes de liaison entre ce point et les points existants. Pour cela, tu dois enregistrer les points existants dans une liste points.


Tu crées d'abord une liste vide avec points = [] . A chaque clic de souris, la fonction addPoint(x, y) est appelée. Celle-ci dessine un point à l'endroit du clic de souris et ajoute les coordonnées du clic de souris dans la liste points. Pour ajouter le point à la liste, tu écris points.append((x, y)).

Avec chaque nouveau point, la fonction drawLines(x, y) est appelée pour dessiner les lignes de connexion. Avec une boucle for, tu parcours la liste des points déjà existants et tu relies chaque élément au nouveau point créé.

 

Programme:

from gturtle import *

def drawLines(x, y):
    for (x1, y1) in points:
        setPos(x, y)            
        moveTo(x1, y1)

def addPoint(x, y):
    setPos(x, y)    
    dot(8)    
    drawLines(x, y)
    points.append((x, y))        

makeTurtle(mousePressed = addPoint)
hideTurtle()
setPenColor("blue")
points = []
print("Click with the mouse to draw points!")
► Copy to clipboard


Exemple 4: Graphiques colorés

Les listes de couleurs permettent de créer de beaux graphiques.

La couleur est modifiée après chaque trait, et après la dernière couleur de la liste, la liste est à nouveau parcourue depuis le début. Expérimente avec différentes couleurs et modifie également le nombre de couleurs.

Le fond est coloré en noir avec la commande clear("black").

 

Programme:    

from gturtle import *

makeTurtle()
clear("black")
colors = ["green", "yellow","red", "blue", "magenta"]
a = 5
while a < 300:
    for c in colors: 
        setPenColor(c) 
        forward(a)
        right(70)
        a = a + 0.8 
► Copy to clipboard

 

 

REMARQUE...

 

Dans une liste, tu peux stocker plusieurs valeurs et accéder aux différents éléments via un index. Pour énumérer les éléments de la liste, tu utilises les crochets.

Avec li.append(x), tu ajoutes un nouvel élément x à la fin de la liste li.
Avec for n in li :, tu parcours la liste li élément par élément.
Une liste peut aussi être créée ou modifiée dynamiquement, pendant l'exécution du programme.

Outre les listes, Python met également à disposition des tuples pour stocker plusieurs valeurs. Les éléments d'un tuple sont indiqués entre parenthèses. Les tuples sont souvent utilisés pour stocker des coordonnées.

 

 

À FAIRE PAR TOI-MÊME

 
1.

Crée une liste colors avec 6 couleurs de votre choix
(w3schools.com/colors/colors_x11.asp).
Dessine un hexagone en choisissant une couleur de ta liste colors pour chaque couleur de page. Pour dessiner les côtés des hexagones, choisis un crayon plus large.

 
2.

À l'aide de nombres aléatoires, tu peux choisir une couleur au hasard dans la liste colors :

from random import randint

colors = ["red", "blue", "yellow", "lime", "magenta"]
i = randint(0, 4)
c = colors[i]
print(c)


Ecris un programme de telle sorte qu'à chaque clic de souris, un cercle soit dessiné à la position de la souris, la couleur étant choisie au hasard dans la liste colors.
Comme dans l'exemple 3, tu définis une fonction de rappel drawDot() qui est appelée à chaque clic de souris. Dans cette fonction, la couleur est définie de manière aléatoire, la tortue est placée à la position du clic de souris et un point est dessiné.



 


3.

A chaque clic de souris, un nouveau cercle est dessiné et en même temps, tous les cercles existants sont recolorés avec la même couleur choisie au hasard dans la liste des couleurs.
Utilise l'exemple 3 comme modèle. La fonction addPoint(x, y) est appelée à chaque clic de souris. Un nouveau point (x, y) est ajouté à la liste points, qui est vide au départ, puis la fonction drawDot() est appelée.

 

Dans la fonction drawDot(), tu choisis une couleur et tu parcours la liste points pour recoloriser tous les points.