Deutsch   English   Français   

10. Listes und Tuples

 

 

TU APPRENDS ICI...

 

comment stocker plusieurs valeurs dans une liste ou un tuple et comment accéder à ces données.

 

 

EXEMPLE

 

Au lieu d’enregistrer séparément des valeurs dans différentes variables a, b, c, Python met à disposition des types de données qui servent de conteneurs pour un nombre quelconque de données. Dans d’autres langages de programmation, on utilise souvent des tableaux (arrays). Contrairement aux tableaux, les listes n’ont pas de longueur fixe prédéfinie : leur taille s’adapte automatiquement au nombre d’éléments enregistrés (structure de données dynamique).

Les éléments d’une liste sont écrits entre crochets, par exemple une liste de noms de couleurs :

colors = ["red", "blue, "green"]

Les valeurs d’un tuple sont écrites entre parenthèses, par exemple les coordonnées x, y d’un point :

pt = (10, 20)

Contrairement aux listes, les valeurs des tuples ne peuvent plus être modifiées après le démarrage du programme. Les listes et les tuples peuvent aussi être combinés, par exemple une liste contenant les coordonnées des sommets d’une figure :

corners = [(2, 3), (5, 8), 7, 1)]]

Example 1: Accéder aux éléments d’une liste
Tu peux parcourir les éléments d’une liste l’un après l’autre avec une boucle for (itération). Dans l’exemple, la liste colors contient 7 noms de couleurs.

Avec la boucle for c in colors: tu parcours la liste dans l’ordre et tu dessines un cercle rempli avec cette couleur, affiché pendant 600 millisecondes. Les instructions de la boucle doivent être indentées.

Tu peux aussi accéder aux éléments d’une liste avec un index. Le premier élément a l’index 0, donc colors[3] ne représente pas le troisième mais le quatrième élément, ici la couleur "magenta".

 

Programme:      

# Gp10a.py
from gpanel import *

makeGPanel(-10, 10, -10, 10)
colors = ["red", "blue", "yellow", "magenta", "green", "cyan"]

for c in colors:
    setColor(c) 
    fillCircle(4)
    delay(600)
    
setColor(colors[3])
fillCircle(6)
Copy to clipboard

 

Example 2: Dessiner un polygone avec la liste des sommets

Pour les coordonnées des sommets, tu utilises des tuples, par exemple (4, 2). Tous les sommets sont regroupés dans la liste corners = [(4. 2), (1, 4) ...].

La fonction fillPolygon(corners)attend comme paramètre une liste de coordonnées de points et remplit la surface délimitée.

 

Programme:     

# Gp10b.py
from gpanel import *

makeGPanel(0, 10, 0, 10)
corners = [(4, 2), (1, 4), (3, 7), (6, 8), (7, 5), (5, 3)]
setColor("blue")

for pt in corners:
    fillPolygon(corners)
Copy to clipboard


Example 3: Créer les éléments d’une liste avec des clics de souris

La liste est une structure de données dynamique, c’est-à-dire que tu peux ajouter des éléments pendant l’exécution du programme.

Dans l’exemple, tu crées une liste vide avec corners = [ ] . Puis tu saisis le nombre de sommets d’un polygone avec une boîte de dialogue. Ensuite, tu ajoutes les points avec des clics de souris. Pour cela, tu utilises la fonction : corners.append((x, y)), qui ajoute le point de coordonnées (x, y) à la fin de la liste. len(corners) donne le nombre actuel d’éléments de la liste.

 

Programme:      

# Gp10c.py
from gpanel import *

def onMousePressed(x, y):
    pos(x, y)
    circle(0.1)
    corners.append((x, y))
    if len(corners) == n:
        for pt in corners:
            fillPolygon(corners)
    
makeGPanel(0, 20, 0, 20, mousePressed = onMousePressed)
corners = []
n = inputInt("Gib Anzahl Ecken an")
setColor("magenta")
Copy to clipboard

 

Example 4:Créer des points avec des clics de souris et dessiner toutes les lignes de connexion

Dans cet exemple, il est avantageux de nommer les points p et q, où les points sont représentés par un tuple de coordonnées p = (x, y) . Après chaque clic de souris, un petit cercle est dessiné au point p, puis p est relié à tous les points q déjà présents dans la liste corners, avant d’être ajouté à la liste.

 

Programme:     

# Gp10d.py
from gpanel import *

def onMousePressed(x, y):
    p = (x, y)
    pos(p)
    fillCircle(0.2)
    for q in corners:
        line(p, q)
    corners.append(p)
  
corners = []
makeGPanel(0, 20, 0, 20, mousePressed = onMousePressed)
Copy to clipboard

 

 

À RETENIR...

 

Dans une liste, tu peux stocker autant de données que tu veux sous un même nom et accéder à ces données avec un index. La notation des listes utilise des crochets. Pour parcourir tous les éléments d’une liste, la méthode la plus simple est d’utiliser une boucle for x in liste: Une liste est une structure de données dynamique : des éléments peuvent être ajoutés ou supprimés pendant l’exécution du programme.

Les valeurs d’un tuple sont écrites entre parenthèses. Contrairement aux listes, elles ne peuvent pas être modifiées après le démarrage du programme.

 

 

À FAIRE PAR TOI-MÊME

 

1)


Avec une boîte de dialogue
z = inputInt("Entre un nombre")
saisis 8 nombres entre 1 et 10 et enregistre-les dans une liste zahlen. Affiche ensuite la liste dans la fenêtre de sortie avec la commande print(). Avec la commande sort(), tu peux trier la liste. Affiche ensuite la liste triée par ordre de grandeur avec print().

 


 

2)


Dessine des cercles remplis avec les couleurs de la liste :
colors = ["red", "blue", "yellow", "magenta", "green", "cyan"]

 


 

3)


Dessine une maison à l’aide d’une liste contenant les coordonnées des sommets.

 


 

4)

Complète l’exemple 4 de manière à ce qu’un ensemble de points avec lignes de connexion soit créé dynamiquement avec le bouton gauche de la souris et qu’avec le bouton droit, les surfaces fermées contenant les coordonnées du clic soient colorées.

Comme dans l’exemple 5 de la section précédente, tu dois d’abord vérifier si le bouton gauche ou droit de la souris a été pressé.

def onMousePressed(x, y):
    if isLeftMouseButton():
        ....
        
    if isRightMouseButton():
       .....  
 


 

 

INFORMATION SUPPLÉMENTAIRE:

 

Les opérations les plus importantes avec les listes

 
 

li[i]

li.append(element)

li.insert(i, element)

li.index(element)

li.pop(i)

pop()

len(li)

del li[i]

li.reverse() 

li.sort() 

Accéder à l’élément d’index i

Ajouter à la fin

Insérer à la position i

Chercher la première occurrence et retourner son index

Supprimer l’élément d’index i et le retourner

Supprimer et retourner le dernier élément

Retourner le nombre d’éléments

Supprimer l’élément d’index i

Kehrt die Liste um (letztes Element wird das erste)

Trier la liste