Pourquoi le choix des structures de données est-il « extrêmement » important ?
Les structures de données Python (et celles de tout langage) sont des moyens spécifiques d’organiser et de stocker des données pour pouvoir les consulter et les traiter efficacement.
Elles définissent la relation entre les données et les opérations qu’on peut effectuer dessus.
Le choix d’une structure de données dépend du problème à résoudre et du type de données dont tu disposes. Une structure inappropriée peut entraîner des temps d’exécution inutilement longs, des fuites de mémoire et un gaspillage de stockage.
Cela peut raisonnablement coûter plusieurs millions d’euros, ou quelques jours de calcul, quand on parle de données à l’échelle.
En bref : Python propose six structures de données principales : le tuple, la chaîne de caractères (str) et l’intervalle (range), qui sont immuables, puis la liste, le dictionnaire et l’ensemble, qui sont mutables. Le choix dépend du problème à résoudre : une structure inappropriée peut entraîner des temps d’exécution inutilement longs et un gaspillage de mémoire ou de stockage.
Tu peux aussi exécuter tous les exemples dans ce notebook Google Colab : chaque extrait de code est dans sa propre cellule, prêt à être modifié.
Quelles sont les structures de données les plus utilisées en Python ?
Dans cet article, tu vas découvrir les structures de données les plus utilisées en Python. Elles couvrent la plupart des cas d’utilisation :
tuple: le tuple ;str: la chaîne de caractères ;range: l’intervalle ;list: la liste ;dict: le dictionnaire ;set: l’ensemble.
Pour chacune, tu vas voir ses propriétés et les opérations qu’on peut effectuer dessus. Le tableau ci-dessous les résume :
| Structure | Mutable | Ordonnée | Doublons | Syntaxe |
|---|---|---|---|---|
Tuple (tuple) | Non | Oui | Oui | (1, 2, 3) |
Chaîne (str) | Non | Oui | Oui | 'texte' |
Intervalle (range) | Non | Oui | Non (valeurs d’une suite) | range(5) |
Liste (list) | Oui | Oui | Oui | [1, 2, 3] |
Dictionnaire (dict) | Oui | Oui (ordre d’insertion) | Clés uniques | {'a': 1} |
Ensemble (set) | Oui | Non | Non | {1, 2, 3} |
Si la notion de mutable et d’immuable n’est pas claire, lis d’abord notre article sur les données mutables et immuables en Python.
1. Qu’est-ce qu’un tuple (tuple) ?
- Séquence immuable et hétérogène (elle peut mélanger plusieurs types).
- Une fois créé, un tuple ne peut pas être modifié.
- Il est entouré de parenthèses plutôt que de crochets.
a = (5, 6.54, "United States")
print(type(a))Python<class 'tuple'>Tu consultes un élément avec son index, qui commence à 0 :
print(a[1])Python6.54La fonction len() retourne la longueur du tuple :
print(len(a))Python3Un tuple peut contenir n’importe quel objet, donc il peut être imbriqué :
b = (1, 1.25, ("US", "UK"))
print(b[2][0])PythonUSPour un tuple à un seul élément, la virgule de fin est obligatoire :
b = (5,)
print(type(b))Python<class 'tuple'>Les parenthèses peuvent être omises dans la plupart des cas :
b = 1, 1.25, 'US'
print(type(b))Python<class 'tuple'>Un tuple peut être décompressé en variables (tuple unpacking), ce qui permet aussi d’échanger deux valeurs :
a, b = (5, 6)
print(a)
print(b)
# Échange de 2 éléments grâce à la décomposition
a = 5
b = 10
a, b = b, a
print(a, b)Python5
6
10 5Le constructeur tuple() crée un tuple à partir d’un autre objet itérable :
# Création d'un tuple à partir d'une liste
a = [1, 2, 3, 4, 5]
print(type(a))
b = tuple(a)
print(type(b))
print(b)
# Création d'un tuple à partir d'une chaîne de caractères
print(tuple('strings'))Python<class 'list'>
<class 'tuple'>
(1, 2, 3, 4, 5)
('s', 't', 'r', 'i', 'n', 'g', 's')2. Qu’est-ce qu’une chaîne de caractères (str) ?
Une chaîne de caractères est une séquence immuable et homogène de caractères Unicode. La fonction len() retourne le nombre de caractères :
a = 'Voici un texte'
print(len(a))Python14Comment concaténer des chaînes de caractères ?
- L’opérateur
+permet de concaténer des chaînes. - Les chaînes sont immuables : l’opérateur
+=crée donc un nouvel objet.
print('Super' + 'Héros' + 'Sexy')PythonSuperHérosSexyUtilise join() pour concaténer une liste de chaînes avec un séparateur :
print(' '.join(['Super', 'Héros', 'Sexy']))PythonSuper Héros SexyPour séparer une chaîne de caractères, utilise split() :
print('Super Héros Sexy'.split(' '))Python['Super', 'Héros', 'Sexy']La méthode partition() divise une chaîne en préfixe, séparateur et suffixe :
print('Singapore:New York'.partition(':'))
# Décomposition du tuple (tuple unpacking)
source, separator, destination = 'Singapore:New York'.partition(':')
print(source)
print(destination)
# Utilisation de la variable factice _ (dummy variable)
source, _, destination = 'Singapore:New York'.partition(':')
print(source)
print(destination)Python('Singapore', ':', 'New York')
Singapore
New York
Singapore
New YorkPour formater une chaîne, utilise format() :
texte = "C'est le {0}e anniversaire de {1} le {0} {2}".format('5', 'Nathan', 'Novembre')
print(texte)PythonC'est le 5e anniversaire de Nathan le 5 NovembreDepuis Python 3.6, les f-strings sont souvent plus lisibles :
jour, nom, mois = '5', 'Nathan', 'Novembre'
print(f"C'est le {jour}e anniversaire de {nom} le {jour} {mois}")PythonC'est le 5e anniversaire de Nathan le 5 Novembre3. Qu’est-ce qu’un intervalle (range) ?
Un range est une séquence arithmétique de valeurs. Il a une valeur de départ (start, optionnelle), une valeur d’arrivée (stop, obligatoire et exclue) et un pas (step, optionnel).
# stop en argument
print(list(range(5)))
# start et stop
print(list(range(2, 5)))
# start, stop et step
print(list(range(2, 10, 2)))Python[0, 1, 2, 3, 4]
[2, 3, 4]
[2, 4, 6, 8]4. Qu’est-ce qu’une liste (list) ?
Une liste est une collection mutable d’objets ordonnés, placés entre crochets.
l = ['Un', 'Super', 'Héros', 'Sexy']PythonQuelles opérations peut-on faire sur une liste ?
Tu peux aussi accéder à un élément depuis la fin avec un index négatif :
l = ['Un', 'Super', 'Héros', 'Sexy']
print(l[1])
# dernier élément
print(l[-1])
# 2e élément en partant de la fin
print(l[-2])PythonSuper
Sexy
HérosLe slicing extrait une partie de la liste :
l = ['Un', 'Super', 'Héros', 'Sexy']
tranche = l[:3]
print(tranche)
tranche = l[1:3]
print(tranche)Python['Un', 'Super', 'Héros']
['Super', 'Héros']Attention à ne pas confondre égalité de contenu (==) et égalité d’objet (is) :
l = ['Un', 'Super', 'Héros', 'Sexy']
# crée une nouvelle liste avec les valeurs de l
full_slice = l[:]
print(full_slice)
# Le contenu de 'l' et 'full_slice' est-il le même ?
print(l == full_slice)
# 'l' et 'full_slice' sont-elles le même objet en mémoire ?
print(l is full_slice)Python['Un', 'Super', 'Héros', 'Sexy']
True
FalseL’opérateur * répète une liste :
a = [1, 0]
print(a * 4)Python[1, 0, 1, 0, 1, 0, 1, 0]La méthode index() trouve l’index d’un élément. Si l’élément est absent, elle lève une ValueError :
l = ['Un', 'Super', 'Héros', 'Sexy']
print(l.index('Héros'))
# Si l'objet n'est pas présent dans la liste
try:
l.index('vole')
except ValueError as erreur:
print(erreur)Python2
'vole' is not in listPour supprimer un élément, utilise le mot-clé del (par indice) ou la méthode remove() (par valeur) :
# supprimer un élément par son indice avec le mot-clé del
l = ['Un', 'Super', 'Héros', 'Sexy']
del l[1]
print(l)
# supprimer par valeur
l = ['un', 'Super', 'Héros', 'Sexy']
l.remove('Super')
print(l)Python['Un', 'Héros', 'Sexy']
['un', 'Héros', 'Sexy']La méthode insert() insère un élément à un index donné :
l = ['Un', 'Super', 'Héros', 'Sexy']
# insérer à un index
l.insert(4, 'Chocolat')
print(l)Python['Un', 'Super', 'Héros', 'Sexy', 'Chocolat']Pour prolonger une liste, tu as trois options :
a = [1, 2, 3]
a = a + [4, 5]
print(a)
# += ajoute les valeurs à la liste existante
a = [1, 2, 3]
a += [4, 5]
print(a)
# ou encore extend()
a = [1, 2, 3]
a.extend([4, 5])
print(a)Python[1, 2, 3, 4, 5]
[1, 2, 3, 4, 5]
[1, 2, 3, 4, 5]Les méthodes reverse() et sort() inversent et trient la liste sur place :
# inverser
a = [1, 2, 3]
a.reverse()
print(a)
# trier
a.sort()
print(a)Python[3, 2, 1]
[1, 2, 3]Tu peux aussi trier avec une clé explicite : sort() accepte une fonction de tri via le paramètre key :
l = 'Un super héros sexy vole au dessus de la tour Eiffel'.split()
print(l)
# trier selon la longueur des mots
l.sort(key=len)
print(l)Python['Un', 'super', 'héros', 'sexy', 'vole', 'au', 'dessus', 'de', 'la', 'tour', 'Eiffel']
['Un', 'au', 'de', 'la', 'sexy', 'vole', 'tour', 'super', 'héros', 'dessus', 'Eiffel']La fonction sorted() retourne une nouvelle liste triée et laisse l’originale inchangée :
a = [1, 4, 2, 7]
b = sorted(a)
print(a)
print(b)Python[1, 4, 2, 7]
[1, 2, 4, 7]5. Qu’est-ce qu’un dictionnaire (dict) ?
Un dictionnaire associe des clés (keys) uniques et immuables à des valeurs (values) mutables. Depuis Python 3.7, il conserve l’ordre d’insertion des clés.
- Les clés doivent être uniques dans un dictionnaire.
- Il est encadré par des accolades
{}. - Les paires clé-valeur (key-value) sont séparées par des virgules.
- Chaque valeur est jointe à sa clé avec
:.
d = {'Google': 'www.google.fr', 'Facebook': 'www.facebook.fr'}
print(d)
# accès avec une clé
print(d['Google'])Python{'Google': 'www.google.fr', 'Facebook': 'www.facebook.fr'}
www.google.frPour parcourir un dictionnaire, utilise la méthode items() :
for k, v in d.items():
print(f'{k} -> {v}')PythonGoogle -> www.google.fr
Facebook -> www.facebook.frTu peux aussi ajouter, lire en toute sécurité et supprimer des paires :
# ajouter ou modifier une paire
d['Wikipédia'] = 'fr.wikipedia.org'
print(d)
# get() renvoie None (ou une valeur par défaut) si la clé n'existe pas
print(d.get('Twitter'))
print(d.get('Twitter', 'inconnu'))
# supprimer une paire
del d['Facebook']
print(d)Python{'Google': 'www.google.fr', 'Facebook': 'www.facebook.fr', 'Wikipédia': 'fr.wikipedia.org'}
None
inconnu
{'Google': 'www.google.fr', 'Wikipédia': 'fr.wikipedia.org'}6. Qu’est-ce qu’un ensemble (set) ?
Un ensemble est une collection non ordonnée d’objets uniques et immuables.
- Il est encadré par des accolades
{}. - Utilise
set()pour créer un ensemble vide, car{}crée un dictionnaire vide. - L’usage le plus courant de
setest de supprimer efficacement les doublons.
Pour créer un ensemble :
s = {1, 2, 3, 5}
print(s)Python{1, 2, 3, 5}Tu peux aussi créer un ensemble à partir d’une autre collection, ce qui supprime les doublons :
l = [1, 2, 2, 3, 4, 4, 5]
# créer un ensemble à partir d'une liste
s = set(l)
print(s)Python{1, 2, 3, 4, 5}Pour ajouter un élément, utilise add() ; pour en ajouter plusieurs d’un coup, update() :
s = {1, 2, 3, 4}
s.add(6)
print(s)
# ajouter un élément déjà existant n'a aucun effet et ne retourne pas d'erreur
s.add(6)
print(s)
# ajout de plusieurs éléments en une fois avec update()
s.update([7, 8, 9, 10])
print(s)Python{1, 2, 3, 4, 6}
{1, 2, 3, 4, 6}
{1, 2, 3, 4, 6, 7, 8, 9, 10}Pour supprimer un élément, remove() retourne une erreur si l’élément est absent, alors que discard() n’en retourne aucune :
s.remove(1)
print(s)
try:
s.remove(1)
except KeyError as erreur:
print('KeyError :', erreur)
# discard() ne retourne aucune erreur, même si l'élément est absent
s.discard(1)
print(s)Python{2, 3, 4, 6, 7, 8, 9, 10}
KeyError : 1
{2, 3, 4, 6, 7, 8, 9, 10}Les ensembles gèrent aussi les opérations mathématiques comme l’union, l’intersection, la différence (union(), intersection(), difference()) ou les tests d’inclusion (issubset(), issuperset()) :
a = {1, 2, 3, 4}
b = {3, 4, 5}
print(a | b) # union
print(a & b) # intersection
print(a - b) # différence
print({3, 4}.issubset(a))Python{1, 2, 3, 4, 5}
{3, 4}
{1, 2}
TruePour manipuler listes, dictionnaires et autres structures de données sur des exercices corrigés, le parcours Python de DataXp te fait pratiquer sur des exercices corrigés, avec un coach IA qui t’aide quand tu bloques. Les premiers modules sont gratuits.
Questions fréquentes sur les structures de données Python
Quelles sont les principales structures de données en Python ?
Six structures couvrent la plupart des cas : le tuple (tuple), la chaîne de caractères (str), l’intervalle (range), la liste (list), le dictionnaire (dict) et l’ensemble (set).
Quelle différence entre une liste et un tuple en Python ?
Une liste est mutable : on peut la modifier après sa création, et elle s’écrit entre crochets. Un tuple est immuable : une fois créé, il ne peut plus être modifié, et il s’écrit entre parenthèses.
Comment supprimer les doublons d’une liste en Python ?
En créant un ensemble (set) à partir de la liste : l’usage le plus courant de set est de supprimer efficacement les doublons. Un ensemble est non ordonné : l’ordre des éléments n’est pas conservé.
Un dictionnaire Python conserve-t-il l’ordre d’insertion ?
Oui, depuis Python 3.7, un dictionnaire conserve l’ordre d’insertion de ses clés. Ses clés doivent être uniques et immuables, et chaque clé est associée à une valeur mutable.
Pourquoi le choix d’une structure de données est-il important ?
Parce que le choix dépend du problème à résoudre et du type de données dont tu disposes. Une structure inappropriée peut entraîner des temps d’exécution inutilement longs, des fuites de mémoire et un gaspillage de stockage, ce qui compte quand on traite des données à grande échelle.
Conclusion
Tu as exploré les principales structures de données intégrées de Python, avec des exemples : tuple, chaîne de caractères, intervalle, liste, dictionnaire et ensemble. Elles sont essentielles pour écrire des programmes efficaces et des applications évolutives.
À lire aussi dans la collection Ninja Python :
Pour aller plus loin avec Python, consulte aussi notre guide des 21 astuces et concepts Python pour améliorer ton code.













