Ensembles Python

Python est équipé de plusieurs types de données intégrés pour nous aider à organiser nos données. Ces structures comprennent les listes, les dictionnaires, les tuples et les ensembles (sets).

Extrait de la documentation Python 3

Un ensemble est une collection non ordonnée sans éléments dupliqués. Les utilisations de base comprennent le test d'appartenance et l'élimination des entrées dupliquées.

Lisez Python Sets: What, Why and How pour une référence plus approfondie.

Initialisation d’un ensemble

Il existe deux façons de créer des ensembles : en utilisant les accolades {} et la fonction intégrée set()

Ensembles Vides

Lors de la création d'un ensemble, assurez-vous de ne pas utiliser d'accolades vides {}, sinon vous obtiendrez un dictionnaire vide à la place.

# Create set using curly braces or set() function
s = {1, 2, 3}  # Using curly braces
s = set([1, 2, 3])  # Using set() constructor

# Warning: empty {} creates a dictionary, not a set
s = {}  # this will create a dictionary instead of a set
type(s)  # Returns <class 'dict'>
<class 'dict'>

Collections non ordonnées d’éléments uniques

Un ensemble supprime automatiquement toutes les valeurs dupliquées.

# Sets automatically remove duplicates
s = {1, 2, 3, 2, 3, 4}  # Duplicates are removed
s  # Returns {1, 2, 3, 4}
{1, 2, 3, 4}
Quiz

Connectez-vous pour répondre à ce quiz et suivre votre progression d'apprentissage

Que se passe-t-il lorsque vous créez un ensemble avec des valeurs dupliquées ?
A. Les doublons sont automatiquement supprimés
B. Une erreur est levée
C. L'ensemble conserve tous les doublons
D. Seule la première occurrence est conservée

Et en tant que type de données non ordonné, ils ne peuvent pas être indexés.

s = {1, 2, 3}
s[0]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'set' object does not support indexing

set add et update

En utilisant la méthode add(), nous pouvons ajouter un seul élément à l’ensemble.

# add() method: add a single element to the set
s = {1, 2, 3}
s.add(4)  # Add element 4
s
{1, 2, 3, 4}

Et avec update(), plusieurs éléments :

# update() method: add multiple elements from an iterable
s = {1, 2, 3}
s.update([2, 3, 4, 5, 6])  # Add multiple elements (duplicates ignored)
s
{1, 2, 3, 4, 5, 6}

set remove et discard

Les deux méthodes supprimeront un élément de l’ensemble, mais remove() lèvera une key error si la valeur n’existe pas.

# remove() method: remove element, raises KeyError if not found
s = {1, 2, 3}
s.remove(3)  # Remove element 3
s
{1, 2}
s.remove(3)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 3

discard() ne lèvera aucune erreur.

# discard() method: remove element, no error if not found
s = {1, 2, 3}
s.discard(3)  # Remove element 3 (safe, no error if missing)
s
{1, 2}
s.discard(3)
Quiz

Connectez-vous pour répondre à ce quiz et suivre votre progression d'apprentissage

Quelle est la différence entre les méthodes remove() et discard() pour les ensembles ?
A. remove() supprime un élément, discard() supprime tout
B. Il n'y a aucune différence
C. remove() lève une erreur si l'élément n'existe pas, discard() non
D. remove() est plus rapide

set union

union() ou | créeront un nouvel ensemble contenant tous les éléments des ensembles fournis.

# union(): combine all elements from multiple sets (no duplicates)
s1 = {1, 2, 3}
s2 = {3, 4, 5}
s1.union(s2)  # or 's1 | s2' - returns {1, 2, 3, 4, 5}
{1, 2, 3, 4, 5}

set intersection

intersection() ou & renverront un ensemble contenant uniquement les éléments communs à tous.

# intersection(): return elements common to all sets
s1 = {1, 2, 3}
s2 = {2, 3, 4}
s3 = {3, 4, 5}
s1.intersection(s2, s3)  # or 's1 & s2 & s3' - returns {3}
{3}
Quiz

Connectez-vous pour répondre à ce quiz et suivre votre progression d'apprentissage

Que retourne intersection() pour les ensembles ?
A. Tous les éléments de tous les ensembles
B. Uniquement les éléments communs à tous les ensembles
C. Les éléments du premier ensemble mais pas des autres
D. Les éléments dans l'un ou l'autre ensemble mais pas les deux

set difference

difference() ou - ne renverront que les éléments uniques au premier ensemble (l’ensemble invoqué).

# difference(): return elements in first set but not in others
s1 = {1, 2, 3}
s2 = {2, 3, 4}

s1.difference(s2)  # or 's1 - s2' - returns {1}
{1}
s2.difference(s1) # or 's2 - s1'
{4}

set symmetric_difference

symmetric_difference() ou ^ renverront tous les éléments qui ne sont pas communs entre eux.

# symmetric_difference(): return elements in either set, but not both
s1 = {1, 2, 3}
s2 = {2, 3, 4}
s1.symmetric_difference(s2)  # or 's1 ^ s2' - returns {1, 4}
{1, 4}
Quiz

Connectez-vous pour répondre à ce quiz et suivre votre progression d'apprentissage

Que retourne symmetric_difference() pour deux ensembles ?
A. Tous les éléments des deux ensembles
B. Uniquement les éléments communs aux deux ensembles
C. Les éléments du premier ensemble mais pas du second
D. Les éléments dans l'un ou l'autre ensemble, mais pas dans les deux

Liens pertinents