Académique Documents
Professionnel Documents
Culture Documents
4.1 Introduction
Dans le chapitre 2, nous avons déjà rencontré quelques types simples de Python comme les nombres
entiers, les nombres réels, etc. Dans ce présent chapitre, nous allons voir comment nous pouvons regrouper
plusieurs valeurs dans une collection comme une liste de nombres, ou un dictionnaire que nous pouvons
utiliser pour stocker et récupérer des paires clé-valeur.
Les structures de données sont des structures qui peuvent contenir certaines données ensemble. En d’autres
termes, elles sont utilisées pour stocker une collection de données connexes. Il existe cinq structures de données
intégrées dans Python : les listes, les tuples, les dictionnaires, les ensembles et les chaı̂nes de caractères. Nous
verrons comment utiliser chacun d’entre eux illustrée par des exemples.
29
>>> 'a' in l # teste l'appartenance de 'a' à la liste
True
>>> len(l) # nombre d'éléments dans la liste
6
>>> l[2] # accès à un élément par sa position
'c'
>>> l[2:4] # accès à une sous-liste
['c', 'd']
>>> del l[3] # suppression d'un élément (par sa position)
>>> l
['a', 'b', 'c', 'd', 'e']
>>> l[3] = 'D' # modification d'un élément
>>> l
['a', 'b', 'c', 'D', 'e']
>>> max(l) # maximum de la liste (ordre lexicographique)
'e'
>>> min(l) # minimum de la liste (ordre lexicographique)
'D'
>>> l.reverse() # inverse l'ordre des éléments dans la liste
>>> l
['e', 'D', 'c', 'b', 'a']
>>> l.sort() # trier la liste (ordre lexicographique)
>>> l
['D', 'a', 'b', 'c', 'e']
>>> [6, 7, 6, 7, 6].count(6) # compter le nombre d'occurence
... # d'un élément
3
>>> list( (1,2,3) ) # contruire une liste (ici à partir d'un tuple)
[1, 2, 3]
30
4.4 Les dictionnaires
Un dictionnaire est une structure de données dite associative, car elle permet de stocker une valeur en lui
associant une clé. Cette clé permet ensuite de retrouver la valeur associée. Les paires de clés et de valeurs
sont spécifiées dans un dictionnaire en utilisant la notation d = key1 : value1, key2 : value2, etc.. Notez que
les paires clé-valeur sont séparées par un deux-points( :) et que les paires sont elles-mêmes séparées par des
virgules et tout cela est entouré d’une paire d’accolades.
Exemple : Pour définir une structure composée d’une note, d’un coefficient et d’une matière, on pourra
alors utiliser un dictionnaire et trois clés (“valeur”, “coefficient” et “matière”) pour stocker et accéder aux
trois valeurs de notre structure.
31
>>> e1 = {"bio-informatique", "anglais", "biologie"}
>>> print(e1)
{'anglais', 'bio-informatique', 'biologie'}
Notez bien qu’il s’agit d’un ensemble non ordonné ce qui explique que print() retourne les éléments
dans un ordre aléatoire.
2. En transformant une liste en set grâce au constructeur set().
Exemple :
>>> e2 = set(["bio-informatique", "anglais", "biologie","anglais"])
>>> print(e2)
{'anglais', 'bio-informatique', 'biologie'}
Notez que le doublon (”anglais”) n’est pas pris en compte et ne lève même pas d’exception.
Il n’est pas possible de déclarer un ensemble vide avec la première méthode. Cela créé un dictionnaire.
Exemple :
>>> s = {}
>>> print(type(s))
<class 'dict'>
Pour créer un ensemble vide, pas d’autre choix que d’utiliser la deuxième méthode.
Exemple :
>>> s = set()
>>> print(type(s))
<class 'set'>
Un récapitulatif de quelques méthodes associées aux ensembles (sets) est illustré par des exemples donnés
dans le fragment de code suivant :
Le fragment de code suivant en mode interactif, donne un aperçu sur quelques opérateurs mathématiques
associées aux ensembles (sets) :
32
>>> s3 = s1 - s2
>>> print(s3)
{'bio-informatique', 'biologie'}
Il n’est pas possible de placer un set dans un autre set car les éléments d’un set doivent être immuables.
Cela signifie que ce genre de code va lever une exception :
Pour remédier à cet inconvénient, on a inventé le frozenset que l’on pourrait traduire par ensemble gelé.
Les frozensets sont des sets immuables. Par conséquent, certaines méthodes telles que add() ou remove()
ne peuvent pas leur être associées. En revanche, ils peuvent appartenir à un set ou être utilisés comme clés de
dictionnaire.
Exemples :
>>> s = {1, 2, 3}
>>> fr_s = frozenset(s) # déclaration d'un frozenset
>>> print(type(fr_s))
<class 'frozenset'>
# Notez bien que le constructeur frozenset() fonctionne également avec un tuple ou une liste:
>>> tup = (1, 2, 3)
>>> fr_s = frozenset(tup)
>>> print(type(fr_s))
<class 'frozenset'>
>>> liste = [1, 2, 3]
>>> fr_s = frozenset(liste)
>>> print(type(fr_s))
<class 'frozenset'>
33
# un frozenset peut appartenir à un set car il est devenu immuable:
>>> liste = [1, 2, 3]
>>> fr_s = frozenset(liste)
>>> s = {fr_s, 4, 5}
>>> print(s)
{5, frozenset({1, 2, 3}), 4}
>>> a is b
True
On peut utiliser les délimiteurs dans la chaı̂ne de caractère elle même, mais il faut les échapper avec \ :
On peut insérer des caractères spéciaux utilisés pour l’affichage : la tabulation ’\t’ et le retour à la ligne
’\n’. Ces caractères apparaissent tels quels dans la chaı̂ne de caractères mais sont interprétés correctement à
l’affichage :
>>>
34
>>> s
'Ce script illustre comment\ndéclarer une cha^
ıne\nde caractères multilignes'
>>> print(s)
Ce script illustre comment
déclarer une cha^
ıne
de caractères multilignes
Python est un langage permettant la redéfinition des opérateurs, ce qui permet de les adapter au contexte
de l’objet. Pour les chaı̂nes de caractères, les opérateurs + et * ont été redéfinis :
Exemples :
>>> 'Hello ' + 'world ' + '!'
'Hello world !'
>>> 'Hi '*3
'Hi Hi Hi '
Dans le code suivant, nous illustrons quelques méthodes associées au chaı̂nes de caractères :
>>> s = "Hello!"
# Les cha^
ınes de caractère sont des séquences immutables. On ne peut pas les modifier:
>>> s[0] = 'A'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'str' object does not support item assignment
35
# Itérer sur une cha^
ıne de caractères
>>> s = "alpha"
>>> for c in s:
print(c)
a
l
p
h
a
Lorsque l’on doit effectuer un traitement sur les chaı̂nes de caractères, la bonne démarche est de se
documenter sur les méthodes proposées par Python. Si le traitement est complexe et ne peut être réalisé à
partir des méthodes fournies par le langage, alors on peut penser à implémenter ses propres fonctions.
4.7 Série 4
Exercice 4.1.
Écrire la suite d’instructions qui récupèrent les entiers pairs dans une nouvelle liste.
Exercice 4.2.
Reprenant la liste des entiers de l’Exercice 1. Écrire la suite d’instructions qui remplacent les entiers impairs
de la liste par des entiers pairs.
Exercice 4.3.
36
Écrire la suite d’instructions qui associent chaque pays de la liste pays à sa capitale de la liste capitale, et
renvoient le résultat dans une liste de tuples.
Exercice 4.4.
Reprenant les deux listes de l’Exercice 4.3 :
Écrire la suite d’instructions qui crée un dictionnaire dont les pays sont les clés et les capitales sont les
valeurs.
Exercice 4.5.
1. Écrire la suite d’instructions qui renvoie dans une liste tous les mots de cette chaı̂ne.
2. Écrire la suite d’instructions qui renvoie dans une liste tous les mots qui commencent par la lettre ‘c’.
Exercice 4.6.
Soit la liste suivante :
Écrire la suite d’instructions qui renvoie dans une chaı̂ne de caractères les éléments de la liste séparés par
des points-virgules.
4.8 Conclusion
Les structures de données complexes (ou évolutives) jouent un rôle très important pour faciliter le stockage
et la manipulation des objets.
Les listes, les chaı̂nes et les tuples sont des séquences ordonnées d’objets. Contrairement aux chaı̂nes qui ne
contiennent que des caractères. Les listes et les tuples peuvent contenir n’importe quel type d’objet. Les listes
et les tuples sont comme des tableaux, la seule différence que les tuples sont immuables (fixes) alors que les
listes sont mutables donc elles peuvent être étendues ou réduites à volonté. Les ensembles sont une séquence
non ordonnée modifiable d’éléments uniques, tandis que les frozensets sont des ensembles immuables.
Dans le chapitre suivant, nous allons apprendre à utiliser les fonctions, une façon adéquate pour réutiliser
des fragments de codes et diminuer la taille d’un programme.
37