Vous êtes sur la page 1sur 7

04/04/2024

Université Cadi Ayyad


Marrakech

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

Pr. Abdelhak KADDRI

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.

▪ Un “ensemble” est une collection d’éléments distincts : Comme en mathématiques, un


ensemble ne pourra pas contenir deux fois le même élément. (les doublons sont supprimés
automatiquement).

▪ Pour manipuler les ensembles en Python, il existe deux types pour ce faire :

• “set” pour une structure mutable.

• “frozenset” pour une structure immutable.

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’}

▪ Pour construire un ensemble vide, on utilise :


>>> l=[1,2,5,8,1,4,8,2]
>>> s3 = set(l)
ens=set() et pas ens={}.
>>> s3
>>> a=set()
{1, 2, 4, 5, 8}
>>> b={} >>> s4 = set(range(8))
>>>type(a), type(b) >>> s4
<class 'set'> <class 'dict'> {0, 1, 2, 3, 4, 5, 6, 7}
ENSA-MARRAAKECH 4

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

x not in s True si x n’appartient pas à s

s.issubset(t) True si tous les éléments de s appartiennent à t s<=t

s.isdisjoint(t) True si l’intersection de s et t est vide

s.issuperset(t) True si t est inclus dans s s>=t

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

Opérations d’ajouts et de suppressions d’éléments :

ensemble.add(element) Ajout de l'élément indiqué à l'ensemble indiqué

Suppression de l'élément indiqué de l'ensemble indiqué, renvoie une erreur si l’élément


ensemble.remove(element)
n’existe pas.
s.discard(x) Supprime l’élément x de s s’il est présent, ne retourne rien s’il est absent.

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()

1. Créer un ensemble vide auMoinsUneFois pour des caractères plusdUneFois=set()


qui apparaissent au moins une fois; for caract in texte:

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)

3. Une boucle pour remplir les deux ensembles simultanément. else:

4. L’ensemble uneFois sera la différence entre ces deux auMoinsUneFois.add(caract)


uneFois=auMoinsUneFois.difference(plusdUneFois)
ensembles, donc uneFois =?.
print(uneFois)

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 :

▪ On construit explicitement un dictionnaire par une ▪ Exemples :


>>> dico = {}
expression de la forme >>> dico['computer'] = 'ordinateur'
>>> dico['mouse'] ='souris'
{ cle1 : valeur1 , cle2 : valeur2 , ... clek : valeurk }
>>> dico['keyboard'] ='clavier'
▪ Puisque le type dictionnaire est un type muable, nous >>> print(dico)
{'computer': 'ordinateur', 'keyboard': 'clavier', 'mouse':
pouvons commencer par créer un dictionnaire vide, puis 'souris'}

le remplir petit à petit.

▪ Du point de vue de la syntaxe, on reconnaît un


dictionnaire au fait que ses éléments sont enfermés dans
une paire d’accolades.

▪ Un dictionnaire vide sera donc noté { } .

ENSA-MARRAAKECH 13

13

Vous aimerez peut-être aussi