Chapitre N°6-Partie1-Initiation À La Prog Python
Chapitre N°6-Partie1-Initiation À La Prog Python
Chapitre N°6-Partie1-Initiation À La Prog Python
Initiation à la
programmation Ecole Nationale des
avec Python sciences appliquées
Chapitre n° 6
Année scolaire 2023/2024
Les structures de données
ensembles et dictionnaires 2ème Semestre
Niveau : CP1
Plan du chapitre 6 :
1) Les ensembles :
a) C’est quoi un ensemble ?
b) Comment construire un ensemble ?
c) Un ensemble est-il une séquence ou pas ?
d) Opérations d’appartenance
e) Opérations classiques sur les ensembles
f) Opérations d’ajout et de suppression
d’éléments
g) Exercice d’application n°1
2) Les dictionnaires :
ENSA-MARRAAKECH 2
1
04/04/2024
Les ensembles
C’est quoi un ensemble ?
▪ En Python un ensemble est une structure de données implémentant la notion d’ensemble
mathématique.
▪ Pour manipuler les ensembles en Python, il existe deux types pour ce faire :
ENSA-MARRAAKECH 3
Les ensembles
Comment construire un ensemble ? Exemples :
>>> s1 = {'A','B','C','D','E','F’}
▪ Syntaxe de la déclaration d’un ensemble
>>> s1
de type “set” : {'A','B','C','D','E','F’}
>>> s2 = set("abracadabra")
▪ monSet=set(séquence)
>>> s2
▪ monSet = {élément1,élément2,...,élémentN} {'a', 'r', 'b', 'c', ‘d’}
2
04/04/2024
Les ensembles
Exemples :
Comment construire un ensemble ? >>> s = frozenset('barbara')
>>> s
▪ Syntaxe de la déclaration d’un ensemble frozenset({'r', 'b', 'a'})
de type “frozenset” : >>> s = frozenset([1, 5, 666])
>>> s
▪ monFrozen= frozenset(séquence)
frozenset({1, 666, 5})
▪ monFrozenVide=frozenset() >>> s.add(3)
Traceback (most recent call last):
▪ Mais fait attention, on ne peut pas File "<stdin>", line 1, in
<module>
modifier son contenu, c.à.d. ni addition ni AttributeError: 'frozenset' object
has no attribute 'add'
suppression des éléments à ce type >>> s = frozenset({5, 12, 777})
>>> s
d’ensemble. frozenset({777, 12, 5})
ENSA-MARRAAKECH 5
Les ensembles
Un ensemble est-il une séquence ou pas ?
▪ Cette structure de données n’est pas une séquence
▪ Exemples :
car : >>> s={1, 3, 5, 7, 9}
>>> s[0]
1. Elle n’est pas indexable : l’accès à un élément ne se
Traceback (most recent call last):
fera donc pas par sa position (ou index).
File "<pyshell#2>", line 1, in <module>
2. Elle n’est pas ordonnée : les éléments sont organisés s[0]
par hasard dans la structure. TypeError: 'set' object is not
subscriptable
▪ Mais Il est tout à fait possible d’itérer sur les éléments >>> for x in s:
... print(x**2)
d’un ensemble. ...
81
▪ Leurs éléments n’étant pas mémorisés de façon 9
1
séquentielle, l’ordre de parcours sera par contre
25
indéfini et imprévisible. 49
ENSA-MARRAAKECH 6
3
04/04/2024
Les ensembles
Opérations d’appartenance :
Syntaxe d’opération Renvoie ? Autre écriture
x in s True si x appartient à s
Exemples :
>>> s={1,3,5,7,9} >>> s.issubset(range(10))
>>> s.isdisjoint([2,4,6,9]) True
False >>> s.issuperset(range(1,6,2))
>>> s.isdisjoint({2,4,6,8}) True
True
ENSA-MARRAAKECH 7
Les ensembles
Opérations classiques sur les ensembles :
Syntaxe d’opération Renvoie ? Autre écriture
L’ensemble des éléments appartenant à ensemble1 ou à
ensemble1.union(ensemble2) ensemble1 | ensemble2
ensemble2
ensemble1.intersection(ensembl2) Les éléments de ensemble1 qui sont aussi éléments de ensemble2 ensemble1 & ensemble2
ensemble1.difference(ensemble2) Les éléments de ensemble1 qui ne sont pas dans ensemble2 ensemble1 – ensemble2
s.pop() Supprime et retourne un élément de s quelconque, renvoie une erreur si l’ensemble est vide.
ENSA-MARRAAKECH 8
4
04/04/2024
Les ensembles
Exemples d’opérations : >>>s1-=s2 #s1=s1-s2
>>> s1 = {'A','B','C','D','E','F'}
>>> s1
>>> s2 = {'E','F','G','H'}
{'A', 'D', 'B', 'C’}
>>> 'C' in s1
>>>s1.pop()
True
>>> s1 & s2 ‘B’
{'F', 'E'} >>>s1
>>> s1 | s2 {'A’,’D’,’C'}
{'G', 'F', 'A', 'C', 'D', 'B', 'E', 'H'} >>>for i in range(len(s2)):
>>> s1 - s2
...s1.add(s2.pop())
{'A', 'D', 'B', 'C’}
>>>s2
>>> s1
{'A','B','C','D','E','F’} set()
Attention : les opérateurs &, | et – >>>s1
n’agissent pas sur l’ensemble mais ils
créent et renvoient un nouvel ensemble. {'A',’D',’C','E','F’,'G','H’}
ENSA-MARRAAKECH 9
Les ensembles
Exercice d’application n°1: Solution :
texte=" Le type set permet de stocker
En utilisant les ensembles de type set, déterminer les caractères qui
des collections de valeurs en offrant
apparaissent exactement une fois,et pas plus, dans un texte donné. des opérations ensemblistes "
▪ Algorithme : auMoinsUneFois=set()
2. Créer un ensemble vide plusdUneFois pour des caractères qui if caract in auMoinsUneFois:
apparaissent plus d’une seul fois ; plusdUneFois.add(caract)
ENSA-MARRAAKECH 10
10
5
04/04/2024
Plan du chapitre 6 :
1) Les ensembles :
a) C’est quoi un ensemble ?
b) Comment construire un ensemble ?
c) Un ensemble est-il une séquence ou pas ?
d) Opérations d’appartenance
e) Opérations classiques sur les ensembles
f) Opérations d’ajouts et de suppressions
d’éléments
g) Exercice d’application n°1
2) Les dictionnaires :
a) C’est quoi ?
b) La syntaxe de déclaration
c) Les dictionnaires sont-ils des séquences ?
d) Opérations sur les dictionnaires
e) Listes de dictionnaires
ENSA-MARRAAKECH 11
11
Les dictionnaires
C’est quoi ?
▪ Le type dict permet de stocker des collections d'associations (table
associative) clé→valeur, et fournissant un accès très rapide à la valeur à partir
de la clé.
▪ L'itération sur un dictionnaire travaille sur les clés. L'ordre n'est pas défini et
peut varier au cours de l'évolution du contenu.
▪ Dans un dictionnaire :
1. les index s’appellent des clés, et les éléments peuvent donc s’appeler des paires clé-
valeur.
2. il n'y a pas deux couples ayant la même clé,
3. la structure est implémentée de manière que la recherche d'une valeur à partir de la
clé correspondante soit extrêmement efficace.
4. Les clés ne doivent pas être des structures muables mais, à part cela, elles peuvent être
de n'importe quel type ; alors que les valeurs sont quelconques.
ENSA-MARRAAKECH 12
12
6
04/04/2024
Les dictionnaires
La syntaxe de déclaration :
ENSA-MARRAAKECH 13
13