HOWTO · Python

Supprimer l'élément de l'ensemble en Python

Il existe plusieurs méthodes pour supprimer des éléments d'un ensemble en Python. Les fonctions remove() et discard() suppriment un seul élément, pop() supprime un élément arbitraire, et l'opérateur -, difference() et difference_update() suppriment plusieurs éléments à la fois.

Sur cette page

Ce tutoriel présente différentes méthodes pour supprimer des éléments d’un ensemble en Python. Pour supprimer un élément, vous pouvez utiliser remove(), discard() ou pop() ; pour supprimer plusieurs éléments à la fois, vous pouvez utiliser l’opérateur -, difference() ou difference_update().

Supprimer un seul élément avec la fonction remove()

La fonction set.remove() supprime un élément spécifique de l’ensemble. Elle prend l’élément à supprimer comme argument. Si l’élément est présent, il est supprimé ; s’il n’est pas présent, remove() lève une KeyError. Voyez l’exemple de code suivant.

set1 = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0}
set1.remove(5)
print(set1)

Sortie :

{0, 1, 2, 3, 4, 6, 7, 8, 9}

Nous avons supprimé l’élément 5 de set1 avec remove(5) dans le code ci-dessus. Le cas où la valeur spécifiée n’est pas présente dans l’ensemble est illustré dans l’exemple ci-dessous.

set1 = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0}
set1.remove(51)
print(set1)

Sortie :

Traceback (most recent call last):
  File "<stdin>", line 2, in <module>
KeyError: 51

Nous avons essayé de supprimer la valeur 51 de set1. Comme aucune valeur 51 n’est présente dans set1, la fonction remove() lève une KeyError.

Supprimer un seul élément avec la fonction discard()

La fonction discard() est très similaire à remove() : elle supprime l’élément spécifié de l’ensemble si la valeur est présente. La seule différence est que discard() ne lève pas de KeyError si la valeur n’est pas présente dans l’ensemble — elle laisse simplement l’ensemble inchangé. L’extrait de code suivant montre comment supprimer un seul élément d’un ensemble avec discard().

set1 = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0}
set1.discard(5)
print(set1)

Sortie :

{0, 1, 2, 3, 4, 6, 7, 8, 9}

Nous avons supprimé la valeur 5 de set1 avec la fonction discard(). Comme expliqué ci-dessus, si nous passons une valeur qui n’est pas présente dans set1, le code s’exécute toujours correctement et aucune exception n’est levée, comme le démontre l’exemple suivant.

set1 = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0}
set1.discard(51)
print(set1)

Sortie :

{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}

Nous avons essayé de supprimer 51 de set1 avec la fonction discard(). Comme la valeur spécifiée n’existe pas dans set1, aucun élément n’est supprimé et aucune erreur ne se produit ; set1 est affiché inchangé.

Supprimer un élément arbitraire avec la fonction pop()

La fonction pop() supprime et renvoie un élément arbitraire de l’ensemble. Utilisez-la lorsque l’élément supprimé importe peu, par exemple pour traiter les éléments un par un jusqu’à ce que l’ensemble soit vide.

set1 = {1, 2, 3, 4, 5}
removed = set1.pop()
print(removed)
print(set1)

Sortie :

1
{2, 3, 4, 5}

pop() a renvoyé 1 et l’a supprimé de set1. L’élément renvoyé est arbitraire — le langage n’en garantit aucun en particulier — ne comptez donc jamais sur pop() pour supprimer une valeur précise. Comme remove(), pop() lève une KeyError si l’ensemble est vide.

Supprimer plusieurs éléments avec l’opérateur -

L’opérateur - effectue l’opération de différence d’ensembles en Python. Il supprime tous les éléments de l’ensemble de droite de l’ensemble de gauche et renvoie le résultat sous la forme d’un nouvel ensemble. Les éléments de l’ensemble de droite qui ne sont pas présents dans l’ensemble de gauche sont simplement ignorés, et cette méthode ne lève aucune exception. L’extrait de code suivant montre comment supprimer plusieurs éléments d’un ensemble avec l’opérateur -.

set1 = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0}
set2 = {2, 4, 6, 8, 0}
set1 = set1 - set2
print(set1)

Sortie :

{1, 3, 5, 7, 9}

Nous avons supprimé tous les éléments de set2 de set1 avec l’opérateur - et réaffecté l’ensemble résultant à set1. L’exemple de code suivant illustre le cas où les deux ensembles n’ont aucun élément en commun.

set1 = {1, 3, 5, 7, 9}
set2 = {2, 4, 6, 8, 0}
set1 = set1 - set2
print(set1)

Sortie :

{1, 3, 5, 7, 9}

Comme aucun des éléments de l’ensemble de droite n’est présent dans l’ensemble de gauche, le code s’exécute correctement et l’opérateur - renvoie l’ensemble de gauche inchangé.

Supprimer plusieurs éléments avec la fonction difference()

La fonction set.difference() effectue la même opération de différence d’ensembles que l’opérateur -, sous forme de méthode. Elle prend l’ensemble dont les éléments doivent être supprimés comme paramètre d’entrée, supprime tous ses éléments de l’ensemble appelant et renvoie le résultat sous la forme d’un nouvel ensemble. Voyez l’extrait de code suivant.

set1 = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0}
set2 = {2, 4, 6, 8, 0}
set1 = set1.difference(set2)
print(set1)

Sortie :

{1, 3, 5, 7, 9}

Nous avons supprimé tous les éléments de set2 de set1 avec la fonction difference() et stocké les résultats dans set1. Le cas où les valeurs de l’ensemble d’entrée ne sont pas présentes dans l’ensemble appelant se comporte pour la fonction difference() exactement comme pour l’opérateur - : rien n’est supprimé et aucune erreur n’est levée.

Supprimer plusieurs éléments en place avec la fonction difference_update()

Les deux méthodes précédentes renvoient un nouvel ensemble, le résultat doit donc être stocké quelque part. La fonction difference_update() fonctionne différemment : elle met à jour l’ensemble appelant en place, en en supprimant directement tous les éléments de l’ensemble passé en argument.

set1 = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0}
set2 = {2, 4, 6, 8, 0}
set1.difference_update(set2)
print(set1)

Sortie :

{1, 3, 5, 7, 9}

Nous avons supprimé tous les éléments de set2 de set1 avec la fonction difference_update(), et set1 lui-même contient désormais l’ensemble résultant — contrairement aux deux méthodes précédentes, il n’a pas été nécessaire de créer un nouvel ensemble uniquement pour stocker les résultats. La fonction difference_update() est équivalente à l’opérateur -= en Python.

Conclusion

Pour supprimer un seul élément, utilisez remove() lorsque l’élément doit être présent — un élément manquant lève une KeyError, ce qui fait apparaître les erreurs tôt — et discard() lorsque l’élément peut être absent. Utilisez pop() lorsqu’un élément quelconque convient. Pour supprimer plusieurs éléments à la fois, utilisez l’opérateur - ou difference() pour obtenir un nouvel ensemble, ou difference_update() (de manière équivalente, -=) pour mettre à jour l’ensemble en place.