ensembles python set

Ensembles et Python

  • Dernière modification de la publication :8 mai 2021
  • Temps de lecture :8 min de lecture
  • Commentaires de la publication :2 commentaires

Loading

Dans les programmes scolaires français du lycée, il est question d’ensembles dès la classe de Seconde, et il est question de Python. On a l’habitude de représenter les ensembles par des listes ou des dictionnaires, mais il existe un autre type pouvant être utile : le type set.

Ensembles en Python: type « set »

Ce type d’objet est un peu spécial par rapport aux listes et aux dictionnaires: c’est un mélange des deux du point de vue syntaxique.

On peut déclarer un ensemble de la manière suivante:

E = {'1','2','3'}

ou encore:

E = set('123')

Ces deux façons de déclarer E donne le même résultat :

>>> E
{'1','2','3'}

Remarquez alors que les éléments de l’ensemble sont de type string. Pour avoir un ensemble de nombres, il faudra utiliser la première syntaxe:

E = {1,2,3}
>>> E
{1, 2, 3}

Les méthodes importantes associées au type « set »

Nous allons partir d’un ensemble vide E :

E = set()

Ensembles en Python: ajouter un élément: add()

E.add(1)

Ici, on ajoute le nombre 1 à l’ensemble. Donc on a maintenant :

>>> E
{1}

Vider l’ensemble: clear()

E.clear()

À ce stade, il n’y a plus rien dans E: on est revenu à l’ensemble vide.

Pour les besoins de la suite, nous allons construire l’ensemble des nombres pairs de 0 à 20:

E = set( 2*k for k in range(11) )
>>> E
{0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20}

Ensembles en Python: supprimer le premier élément: pop()

E.pop()
>>> E
{2, 4, 6, 8, 10, 12, 14, 16, 18, 20}

Réunion de deux ensembles: union()

Pour les besoins de ce paragraphe, je vais d’abord construire l’ensemble des multiples de 3 de 0 à 20:

F = set( 3*k for k in range(7) )
>>> F
{0, 3, 6, 9, 12, 15, 18}

Pour obtenir la réunion des ensembles E et F, on écrit:

U = E.union(F)
>>> U
{2, 4, 6, 8, 10, 12, 14, 16, 18, 20}

Intersection de deux ensembles: intersection()

R = E.intersection(F)
>>> R
{18, 12, 6}

Supprimer un élément: discard()

E.discard(10)
>>> E
{2, 4, 6, 8, 12, 14, 16, 18, 20}

Différence de deux ensembles: difference()

D = E.difference(F)  # ensemble E auquel on a enlevé tous les éléments de F
DD = F.difference(E) # ensemble F auquel on a enlevé tous les éléments de E
>>> D 
{2, 4, 8, 14, 16, 20}
>>> DD # ensemble F auquel on a enlevé tous les éléments de E
{0, 9, 3, 15}

La différence symétrique (jointure d’exclusion): symmetric_difference()

S = E.symmetric_difference(F)
>>> S
{0, 2, 3, 4, 8, 9, 14, 15, 16, 20}

La jointure d’exclusion de E et F est l’ensemble des éléments qui sont dans E ou dans F, mais pas dans leur intersection.

On peut aussi utiliser la syntaxe suivante:

>>> S = E ^ F

Ensembles en Python: ajouter plusieurs éléments: update()

X = {1,2,3,4,5}
Y = {50,60,70,80}
X.update(Y)
>>> X
{1, 2, 3, 4, 5, 70, 80, 50, 60}

Les tests

Est-ce un sous-ensemble ? issubset()

>>> F.issubset(E)
False

En effet, F n’est pas un sous-ensemble de E.

Les deux ensembles sont-ils disjoints ?

>>> E.isdisjoint(F)
False

En effet, nos ensembles E et F ne sont pas ici disjoints car ils ont des éléments en commun.

Ce type est en complément de ce que l’on peut voir au lycée (voir cette page par exemple).

0 0 votes
Évaluation de l'article
S’abonner
Notification pour
guest
2 Commentaires
Le plus ancien
Le plus récent Le plus populaire
Commentaires en ligne
Afficher tous les commentaires
Philippe Rackette

Cela me semble très pratique pour apprendre qu’on démontre l’égalité de deux ensembles par double inclusion. J’éviterais de présenter la méthode pop() aux élèves, bien que pratique en programmation, le concept général de premier élément d’un ensemble n’existe pas en mathématiques.