Supprimer des éléments d'un ensemble
Apprenez à supprimer des éléments d'un ensemble Python avec discard(), remove(), pop(), clear() et difference_update(), avec exemples et mises en garde.
Les ensembles Python sont mutables, vous pouvez donc supprimer des éléments à tout moment. Le langage propose plusieurs méthodes de suppression — chacune avec un comportement différent lorsque l'élément est absent, ou lorsque vous souhaitez supprimer plusieurs éléments à la fois. Choisir la bonne méthode évite les bugs et rend votre intention claire pour les lecteurs de votre code.
Ce chapitre couvre :
discard()— supprimer un élément, sans erreur s'il est absentremove()— supprimer un élément, lèveKeyErrors'il est absentpop()— supprimer et retourner un élément arbitraireclear()— supprimer tous les éléments, laissant un ensemble videdifference_update()— supprimer plusieurs éléments en un seul appel- Suppression conditionnelle avec une boucle et avec des compréhensions d'ensembles
Si vous débutez avec les ensembles, lisez d'abord Python Sets. Pour ajouter des éléments à un ensemble, consultez Add Set Items.
La méthode discard()
discard() supprime l'élément spécifié de l'ensemble. Si l'élément est absent, la méthode ne fait rien — aucune exception n'est levée. C'est le choix le plus sûr lorsque vous n'êtes pas certain que l'élément existe.
Syntaxe
set.discard(element)element— la valeur à supprimer.- Valeur de retour :
None. L'ensemble est modifié en place.
Supprimer un élément présent
Supprimer un élément qui existe dans l'ensemble
Supprimer un élément absent est sans danger
fruits = {'apple', 'banana', 'cherry'}
fruits.discard('mango') # 'mango' is not in the set
print(fruits)
# {'apple', 'banana', 'cherry'} — unchanged, no errorCela rend discard() idéal dans les boucles où vous ne pouvez pas être certain que chaque élément que vous souhaitez supprimer est présent.
La méthode remove()
remove() supprime également un seul élément, mais lève une KeyError si l'élément est introuvable. Utilisez-la lorsque l'élément doit exister — l'erreur sert d'avertissement précoce qu'il y a un problème.
Syntaxe
set.remove(element)- Valeur de retour :
None. L'ensemble est modifié en place.
Supprimer un élément présent
Supprimer un élément d'un ensemble Python
Tenter de supprimer un élément absent lève KeyError
fruits = {'apple', 'banana', 'cherry'}
fruits.remove('mango')
# KeyError: 'mango'Si vous souhaitez éviter l'erreur tout en utilisant remove(), protégez l'appel avec une vérification in, ou passez à discard() :
element = 'mango'
if element in fruits:
fruits.remove(element)discard() vs remove() — Différences clés
discard() | remove() | |
|---|---|---|
| Élément présent | Le supprime | Le supprime |
| Élément absent | Ne fait rien | Lève KeyError |
| À utiliser quand | La suppression est optionnelle | L'élément doit exister |
La méthode pop()
pop() supprime un élément arbitraire de l'ensemble et le retourne. Comme les ensembles ne sont pas ordonnés, vous ne pouvez pas prévoir quel élément sera supprimé — cela dépend de la disposition interne de la table de hachage, pas de l'ordre d'insertion.
Syntaxe
removed = set.pop()- Valeur de retour : l'élément supprimé.
- Lève
KeyErrorsi l'ensemble est vide.
Extraire un élément d'un ensemble en Python
pop() sur un ensemble vide lève KeyError
empty = set()
empty.pop()
# KeyError: 'pop from an empty set'Protégez-vous contre cela avec une simple vérification de longueur :
if fruits:
item = fruits.pop()Quand utiliser pop()
pop() est utile lorsque vous devez traiter et consommer des éléments un par un et que l'ordre ne vous importe pas — par exemple, lors du vidage d'une file de travail stockée sous forme d'ensemble.
La méthode clear()
clear() supprime tous les éléments de l'ensemble, le laissant vide. L'objet ensemble lui-même existe toujours ; seul son contenu est supprimé.
Syntaxe
set.clear()- Valeur de retour :
None.
Vider un ensemble en Python
set() est la façon dont Python affiche un ensemble vide. Python ne peut pas utiliser {} pour un ensemble vide car cette notation signifie déjà un dictionnaire vide.
La méthode difference_update()
difference_update() supprime chaque élément d'un itérable donné de l'ensemble, en un seul appel. C'est l'équivalent en place de l'opérateur - (différence).
Syntaxe
set.difference_update(iterable)iterable— un ensemble, une liste, un tuple ou tout autre itérable dont vous souhaitez supprimer les éléments.- Les éléments de l'itérable qui ne sont pas dans l'ensemble sont ignorés silencieusement.
- Valeur de retour :
None. L'ensemble est modifié en place.
Supprimer plusieurs éléments à la fois
numbers = {1, 2, 3, 4, 5}
numbers.difference_update({2, 4})
print(numbers)
# {1, 3, 5}Comparez cela à la création d'un nouvel ensemble avec l'opérateur -, qui laisse l'original inchangé :
numbers = {1, 2, 3, 4, 5}
result = numbers - {2, 4} # new set, 'numbers' is not modified
print(result) # {1, 3, 5}
print(numbers) # {1, 2, 3, 4, 5}Utilisez difference_update() lorsque vous souhaitez muter l'ensemble existant ; utilisez - lorsque vous avez besoin d'un nouvel ensemble et souhaitez préserver l'original.
Supprimer plusieurs éléments avec une boucle
Lorsque les éléments à supprimer ne sont pas connus à l'avance, collectez-les d'abord, puis appelez discard() dans une boucle. Ne modifiez pas un ensemble pendant que vous l'itérez — cela lève une RuntimeError.
Modèle correct — collecter les candidats d'abord, puis supprimer
fruits = {'apple', 'banana', 'cherry', 'avocado'}
# Step 1: collect elements to remove (do NOT modify the set here)
to_remove = [item for item in fruits if item.startswith('a')]
# Step 2: remove them
for item in to_remove:
fruits.discard(item)
print(fruits)
# {'banana', 'cherry'}Filtrer avec une compréhension d'ensemble
Si vous souhaitez conserver uniquement les éléments qui satisfont une condition, une compréhension d'ensemble produit un nouvel ensemble et laisse l'original intact :
Conserver uniquement les nombres pairs
nums = {1, 2, 3, 4, 5, 6}
evens = {x for x in nums if x % 2 == 0}
print(evens)
# {2, 4, 6}C'est préférable lorsque vous devez préserver l'ensemble original ou affecter le résultat à une nouvelle variable. Pour les grands ensembles, c'est également légèrement plus lisible que de muter en place.
Voir Loop Sets pour plus de modèles d'itération sur les ensembles.
Référence rapide des méthodes
| Méthode | Supprime | Élément absent | Retourne |
|---|---|---|---|
discard(x) | Élément x | Ignoré | None |
remove(x) | Élément x | KeyError | None |
pop() | Élément arbitraire | KeyError (si vide) | Élément supprimé |
clear() | Tous les éléments | s/o | None |
difference_update(it) | Tous les éléments dans it | Ignoré | None |
Pour une référence complète de toutes les méthodes d'ensemble, consultez Set Methods. Pour apprendre à itérer sur un ensemble, consultez Loop Sets.