Les structures de données en Python
Les programmes ont besoin de manipuler des ensembles de données : une liste de notes, des prénoms d’étudiants, des coordonnées, ou encore des informations organisées sous forme de clés et de valeurs. Ces ensembles sont appelés structures de données.
Python propose plusieurs structures simples et puissantes pour stocker et organiser ces informations : les listes, les chaînes de caractères, les tuples et les dictionnaires. Les maîtriser est indispensable pour écrire des programmes clairs, efficaces et évolutifs. Contrairement à d’autres langages où il faut définir à l’avance le type ou la taille d’un tableau, Python gère automatiquement la taille et le type des éléments dans ces structures. Elles peuvent contenir des données de natures différentes, être modifiées à la volée et parcourues facilement grâce aux boucles.
Objectifs pédagogiques
- Créer et manipuler des listes pour stocker plusieurs valeurs.
- Utiliser et transformer des chaînes de caractères.
- Découvrir les tuples et leurs particularités.
- Organiser les données avec les dictionnaires (paires clé–valeur).
Les listes
[ ]. On peut y stocker des nombres, des chaînes ou même d’autres listes. C’est la structure la plus utilisée en Python, car elle permet de regrouper facilement plusieurs valeurs liées entre elles et de les manipuler sans contrainte de type.Exemple - création de listes
nombres = [10, 20, 30, 40] prenoms = ["Alice", "Bob", "Charlie"] mix = [42, "Python", True] print(prenoms)
Accéder et modifier des éléments
prenoms[0] = "Alex" print(prenoms[1]) print(len(prenoms))
Les indices commencent toujours à 0, et on peut modifier directement les éléments car les listes sont mutables (contrairement à certaines autres structures comme les tuples).
Ajouter ou supprimer des éléments
prenoms.append("Diana") # ajoute à la fin
prenoms.insert(1, "Lucas") # insère à la position 1
prenoms.remove("Bob") # supprime une valeur
print(prenoms)
Il existe aussi d’autres méthodes utiles comme pop() (retire un élément par son indice), clear() (vide la liste), ou encore extend() (ajoute plusieurs éléments d’un coup).
Parcourir une liste
for nom in prenoms:
print("Bonjour", nom)
On peut aussi parcourir les indices avec range(len(prenoms)) si l’on souhaite accéder à la position de chaque élément.
Fonctions utiles
| Fonction | Effet | Exemple | Résultat |
|---|---|---|---|
len() | longueur de la liste | len([1,2,3]) | 3 |
sum() | somme des éléments | sum([2,5,8]) | 15 |
min() / max() | valeurs extrêmes | max([3,9,4]) | 9 |
sorted() | trie la liste | sorted([3,1,2]) | [1,2,3] |
Exemple complet
notes = [12, 15, 9, 18]
moyenne = sum(notes) / len(notes)
print(f"Moyenne : {moyenne:.2f}")
Les listes sont donc très polyvalentes : elles peuvent évoluer au fil de l’exécution du programme et s’adaptent à la plupart des situations où il faut stocker plusieurs valeurs.
Les chaînes de caractères
str) est une suite de symboles entre guillemets. En Python, une chaîne se comporte presque comme une liste de lettres. Elle est cependant immuable : on peut la lire, la parcourir et en créer de nouvelles à partir d’elle, mais on ne peut pas modifier directement un caractère existant.Exemple
mot = "Python" print(mot[0]) # P print(mot[-1]) # n print(len(mot)) # 6
Chaque caractère est accessible par un indice, comme dans une liste. Les indices négatifs permettent de partir de la fin de la chaîne.
Parcourir une chaîne
for lettre in mot:
print(lettre)
Cette approche est souvent utilisée pour analyser ou transformer un texte caractère par caractère.
Méthodes utiles
| Méthode | Effet | Exemple | Résultat |
|---|---|---|---|
.lower() | tout en minuscules | "PYTHON".lower() | "python" |
.upper() | tout en majuscules | "python".upper() | "PYTHON" |
.replace(a, b) | remplace un mot | "chat".replace("ch", "r") | "rat" |
.split() | découpe une phrase | "a,b,c".split(",") | ['a','b','c'] |
.join() | assemble une liste | ",".join(['a','b']) | "a,b" |
Ces méthodes ne modifient pas la chaîne d’origine : elles renvoient une nouvelle chaîne. Il est donc possible de les enchaîner pour effectuer plusieurs transformations à la suite.
Exemple complet
phrase = "Python est amusant"
mots = phrase.split()
print(f"Il y a {len(mots)} mots dans la phrase.")
Les chaînes sont omniprésentes en programmation : elles servent à afficher des messages, à lire des entrées utilisateurs, à manipuler des fichiers texte ou encore à formater des données avant leur enregistrement.
Les tuples
( ). On l’utilise pour représenter des données fixes : coordonnées, dates, couleurs… Contrairement à une liste, un tuple ne peut pas être modifié après sa création : on ne peut ni ajouter, ni supprimer, ni changer ses éléments.Exemple
coordonnees = (3, 7) print(coordonnees[0]) # 3
Les tuples sont plus rapides que les listes et idéaux pour les données constantes. Ils peuvent aussi être utilisés comme clés dans un dictionnaire, ce qui n’est pas possible avec les listes, car ils sont immuables.
Exemple pratique
date = (2025, 11, 11)
print(f"Date : {date[2]}/{date[1]}/{date[0]}")
Il est également possible de décomposer un tuple directement en plusieurs variables :
(x, y) = coordonnees
print(f"x = {x}, y = {y}")
Cette propriété, appelée dépaquetage, est très utile pour manipuler des données structurées sans avoir à accéder aux indices.
Les dictionnaires
{ } avec la syntaxe clé: valeur. C’est une structure très puissante pour représenter des informations organisées, comme des fiches, des objets ou des données JSON.Exemple
eleve = {
"nom": "Alice",
"age": 20,
"moyenne": 14.5
}
print(eleve["nom"]) # Alice
print(eleve.get("moyenne")) # 14.5
Chaque clé doit être unique et de type immuable (chaîne, nombre, ou tuple), tandis que les valeurs peuvent être de n’importe quel type. L’accès se fait directement par la clé, ce qui rend les recherches très rapides, même dans de grands ensembles de données.
Modifier un dictionnaire
eleve["ville"] = "Montpellier" eleve["moyenne"] = 15.2 del eleve["age"] print(eleve)
Les dictionnaires sont dynamiques : on peut ajouter, mettre à jour ou supprimer des entrées à tout moment. La méthode get() permet d’accéder à une valeur sans provoquer d’erreur si la clé n’existe pas.
Parcourir un dictionnaire
for cle, valeur in eleve.items():
print(cle, ":", valeur)
Cette forme de boucle est la plus courante : elle permet de parcourir à la fois les clés et les valeurs sans devoir les extraire séparément.
Fonctions utiles
| Méthode | Effet | Exemple |
|---|---|---|
.keys() | renvoie toutes les clés | eleve.keys() |
.values() | renvoie toutes les valeurs | eleve.values() |
.items() | renvoie les paires clé–valeur | eleve.items() |
len() | nombre d’éléments | len(eleve) |
Ces méthodes sont très utiles pour explorer ou manipuler un dictionnaire de manière flexible.
Exemple complet
notes = {"Alice": 14, "Bob": 12, "Charlie": 17}
moyenne = sum(notes.values()) / len(notes)
print(f"Moyenne générale : {moyenne}")
Les dictionnaires sont omniprésents en Python : on les retrouve dans la manipulation de fichiers JSON, la configuration d’applications, les bases de données, ou encore dans les échanges entre programmes.
