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

Définition
Une liste est une collection ordonnée d’éléments, modifiable, et encadrée par des crochets [ ]. 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

FonctionEffetExempleRésultat
len()longueur de la listelen([1,2,3])3
sum()somme des élémentssum([2,5,8])15
min() / max()valeurs extrêmesmax([3,9,4])9
sorted()trie la listesorted([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

Définition
Une chaîne de caractères (type 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éthodeEffetExempleRé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

Définition
Un tuple est une collection ordonnée mais non modifiable, écrite entre parenthèses ( ). 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

Définition
Un dictionnaire associe des clés à des valeurs : on l’écrit entre accolades { } 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éthodeEffetExemple
.keys()renvoie toutes les cléseleve.keys()
.values()renvoie toutes les valeurseleve.values()
.items()renvoie les paires clé–valeureleve.items()
len()nombre d’élémentslen(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.