W3docs

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 absent
  • remove() — supprimer un élément, lève KeyError s'il est absent
  • pop() — supprimer et retourner un élément arbitraire
  • clear() — supprimer tous les éléments, laissant un ensemble vide
  • difference_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

python— editable, runs on the server

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 error

Cela 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

python— editable, runs on the server

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ésentLe supprimeLe supprime
Élément absentNe fait rienLève KeyError
À utiliser quandLa suppression est optionnelleL'é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 KeyError si l'ensemble est vide.

Extraire un élément d'un ensemble en Python

python— editable, runs on the server

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

python— editable, runs on the server

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éthodeSupprimeÉlément absentRetourne
discard(x)Élément xIgnoréNone
remove(x)Élément xKeyErrorNone
pop()Élément arbitraireKeyError (si vide)Élément supprimé
clear()Tous les élémentss/oNone
difference_update(it)Tous les éléments dans itIgnoré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.

Pratique

Pratique
Which of the following methods can be used to remove items from a set in Python?
Which of the following methods can be used to remove items from a set in Python?
Was this page helpful?