Les ensembles en Python

Ensemble Python

Les ensembles -comme les listes- sont utilisés pour stocker une collection d’éléments. Contrairement aux listes, les éléments d’un ensemble sont distincts et ne sont pas placés dans un ordre particulier.

Chaque élément dans l’ensemble doit être un objet hashable (exemple : entier, flottant, logique, complexe, chaîne de caractères, tuple).

Si votre application ne se soucient pas de l’ordre des éléments, utilisant un ensemble pour stocker des éléments est plus efficace que l’utilisation de listes dues aux implémentations de Python. Cette section présente comment utiliser des ensembles.

Création d’ensembles

Vous pouvez créer un ensemble d’éléments en enfermant les éléments à l’intérieur d’une paire d’accolades « { } ». Les éléments sont séparés par des virgules.

Vous pouvez créer un ensemble vide, ou vous pouvez créer un ensemble à partir d’une liste ou un tuple, comme le montrent les exemples suivants:

s1 = set() # Créer un ensemble vide
s2 = {1, 3, 5} # Créer un ensemble de trois éléments
s3 = set([1, 3, 5]) # Créer un ensemble à partir d’un tuple

# Créer un ensemble à partir d’un liste
s4 = set([x * 2 for x in range(1, 10)])

De même, vous pouvez créer une liste ou un tuple à partir d’un ensemble en utilisant la de syntaxe list(ensemble) ou tuple(ensemble).

Vous pouvez également créer un ensemble à partir d’une chaîne de caractères. Chaque caractère de la chaîne devient un élément de l’ensemble. Par exemple:

s5 = set("abac") # s5 is {'a', 'b', 'c'}

Malgré le caractère « a » apparaît deux fois dans la chaîne, il n’apparaît qu’une seule fois dans l’ensemble s5 car un ensemble ne stocke pas d’éléments dupliqués.

Un ensemble peut contenir des éléments de même type ou de types mixtes. Par exemple, s= {1, 2, 3, “un”, “deux”, “trois”} est un ensemble qui contient des nombres et des chaînes.

Manipuler et accéder aux éléments d’un ensemble

Vous pouvez ajouter un élément à un ensemble ou supprimer un élément en utilisant les méthodes add() et remove(). Vous pouvez appliquer les fonctions len(), min(), max(), et sum() sur un ensemble ainsi qu’utiliser une boucle for pour parcourir tous ses éléments.

Vous pouvez utiliser les opérateurs in et not in pour déterminer si un élément est dans l’ensemble ou pas. Par exemple:

>>> s1 = {1, 2, 4}
>>> s1.add(6)
>>> s1
{1, 2, 4, 6}
>>> len(s1)
4
>>> max(s1)
6
>>> min(s1)
1
>>> sum(s1)
13
>>> 3 in s1
False
>>> s1.remove(4)
>>> s1
{1, 2, 6}
>>>

La méthode remove() lancera une exception KeyError si l’élément à être enlevé n’appartient pas à l’ensemble de base.

Les sous-ensembles

Un ensemble s1 est un sous-ensemble de s2 si chaque élément de s1 est également un élément de s2. Vous pouvez utiliser l’instruction s1.issubset (s2) pour déterminer si s1 est sous-ensemble de s2, comme indiqué dans le code suivant:

>>> s1 = {1, 2, 4}
>>> s2 = {1, 4, 5, 2, 6}
>>> s1.issubset(s2) # tester si s1 est un sous-ensemble de s2
True

On peut refaire le même test en utilisant la fonction issuperset() comme indiqué dans le code suivant :

>>> s1 = {1, 2, 4}
>>> s2 = {1, 4, 5, 2, 6}
>>> s2.issuperset(s1) # tester si s1 est sous-ensemble de s2
True
>>>

Test d’égalité

Vous pouvez utiliser les opérateurs == et! = pour tester si deux ensembles contiennent les mêmes éléments.

>>> s1 = {1, 2, 4}
>>> s2 = {1, 4, 2}
>>> s1 == s2
True
>>> s1 != s2
False
>>>

Dans cet exemple, s1 et s2 contiennent les mêmes éléments sans prendre en considération l’ordre des éléments dans les ensembles.

Notez que comparer les ensembles en utilisant les opérateurs de comparaison classiques (>,> =, <= et <) n’a aucun sens parce que les éléments d’un ensemble ne sont pas ordonnés.

Toutefois, ces opérateurs ont une signification particulière lorsqu’ils sont appliqués sur des ensembles comme suit:

  • s1 < s2 retourne True si s1 est un sous-ensemble propre de s2.
  • s1 <= s2 retourne True si s1 est un sous-ensemble de s2.
  • s1 > s2 retourne True si s2 est un sous-ensemble propre de s1.
  • s1 >= s2 retourne True si s2 est un sous-ensemble de s1.

Note: Si s1 est un sous-ensemble propre de s2 alors chaque élément de s1 est également dans s2, et au moins un élément de s2 n’est pas dans s1.

Opérations sur les ensembles

Python fournit les méthodes (fonctions) pour effectuer des opérations d’union, intersection, différence, et de différence symétrique sur les ensembles.

L’union de deux ensembles est un ensemble qui contient tous les éléments des deux ensembles. Vous pouvez utiliser la méthode union ou l’opérateur« | » pour effectuer cette opération.

Par exemple:

>>> s1 = {1, 2, 4}
>>> s2 = {1, 3, 5}
>>> s1.union(s2)
{1, 2, 3, 4, 5}
>>>
>>> s1 | s2
{1, 2, 3, 4, 5}
>>>

L’intersection de deux ensembles est un ensemble qui contient les éléments qui apparaissent dans les deux ensembles. Vous pouvez utiliser la méthode intersection ou l’opérateur & pour effectuer cette opération. Par exemple:

>>> s1 = {1, 2, 4}
>>> s2 = {1, 3, 5}
>>> s1.intersection(s2)
{1}
>>>
>>> s1 & s2
{1}
>>>

La différence entre ensemble1 et ensemble2 est un ensemble qui contient les éléments de ensemble1 non appartenant à ensemble2. Vous pouvez utiliser la méthode difference ou l’opérateur «-» pour effectuer cette opération. Par exemple:

>>> s1 = {1, 2, 4}
>>> s2 = {1, 3, 5}
>>> s1.difference(s2)
{2, 4}
>>>
>>> s1 - s2
{2, 4}
>>>

La différence symétrique (ou exclusif) de deux ensembles s1 et s2est un ensemble qui contient les éléments des deux ensemble sauf ceux appartenant à l’intersection de s1 et s2.

Vous pouvez utiliser la méthode symmetric_difference ou l’opérateur ^ pour effectuer cette opération. Par exemple:

>>> s1 = {1, 2, 4}
>>> s2 = {1, 3, 5}
>>> s1.symmetric_difference(s2)
{2, 3, 4, 5}
>>>
>>> s1 ^ s2
{2, 3, 4, 5}
>>>

Notez que ces méthodes renvoient un ensemble résultant, mais elles ne changent pas les éléments dans les ensembles.

Exemple de démonstration

set1 = {"green", "red", "blue", "red"} # Créer un ensemble
print(set1)

set2 = set([7, 1, 2, 23, 2, 4, 5]) # Créer un ensemble à partir d'une liste
print(set2)

print("Le rouge est dans set1? ", "red" in set1)

print("la longueur est ", len(set2)) # Utiliser la fonction len
print("Le max est", max(set2)) # Utiliser la fonction max
print("Le min est", min(set2)) # Utiliser la fonction min
print("La somme est", sum(set2)) # Utiliser la fonction sum

set3 = set1 | {"green", "yellow"} # union
print(set3)

set3 = set1 - {"green", "yellow"} # différence
print(set3)

set3 = set1 & {"green", "yellow"} # intersection
print(set3)

set3 = set1 ^ {"green", "yellow"} # différence symétrique (OU exclusive)
print(set3)

list1 = list(set2) # Obtenir une liste à partir d'un ensemble
print(set1 == {"green", "red", "blue"}) # Comparer deux ensembles

set1.add("yellow") # ajouter un élément
print(set1)

set1.remove("yellow") # Supprimer un élément
print(set1)

Voici le résultat du code ci-dessus :

{'red', 'blue', 'green'}
{1, 2, 4, 5, 7, 23}
Le rouge est dans set1? True
la longueur est 6
Le max est 23
Le min est 1
La somme est 42
{'red', 'yellow', 'blue', 'green'}
{'red', 'blue'}
{'green'}
{'red', 'yellow', 'blue'}
True
{'red', 'yellow', 'blue', 'green'}
{'red', 'blue', 'green'}

 

LAISSER UN COMMENTAIRE

Please enter your comment!
Please enter your name here