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}
Connectez-vous pour répondre à ce quiz et suivre votre progression d'apprentissage
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)
Connectez-vous pour répondre à ce quiz et suivre votre progression d'apprentissage
remove() et discard() pour les ensembles ?remove() supprime un élément, discard() supprime toutremove() lève une erreur si l'élément n'existe pas, discard() nonremove() est plus rapideset 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}
Connectez-vous pour répondre à ce quiz et suivre votre progression d'apprentissage
intersection() pour les ensembles ?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}
Connectez-vous pour répondre à ce quiz et suivre votre progression d'apprentissage
symmetric_difference() pour deux ensembles ?