W3docs

Joindre des ensembles en Python

Apprenez toutes les façons de joindre des ensembles Python : union(), update(), les opérateurs | et |=, et les méthodes en place pour l'intersection, la différence et la différence symétrique.

Python fournit plusieurs façons de combiner deux ensembles ou plus en une seule collection. Cette page les couvre toutes — la méthode union(), la méthode update(), leurs raccourcis opérateurs (| et |=), la jonction de plus de deux ensembles à la fois, et les méthodes en place associées pour l'intersection, la différence et la différence symétrique.

Comparaison rapide

ObjectifMéthodeOpérateurModifie l'original ?
Nouvel ensemble avec tous les élémentsunion()|Non — retourne un nouvel ensemble
Ajouter tous les éléments en placeupdate()|=Oui
Nouvel ensemble — éléments communs uniquementintersection()&Non
Conserver uniquement les éléments communsintersection_update()&=Oui
Nouvel ensemble — éléments absents de l'autredifference()-Non
Supprimer les éléments présents dans l'autredifference_update()-=Oui
Nouvel ensemble — éléments dans l'un mais pas les deuxsymmetric_difference()^Non
Conserver les éléments dans l'un mais pas les deuxsymmetric_difference_update()^=Oui

Joindre des ensembles avec union()

union() retourne un nouvel ensemble contenant chaque élément unique de tous les ensembles passés en argument. Les ensembles d'origine ne sont pas modifiés.

Unir deux ensembles en Python

python— editable, runs on the server

Sortie (l'ordre peut varier — les ensembles ne sont pas ordonnés) :

{'apple', 'banana', 'cherry', 'mango', 'orange'}

Puisque set2 contient déjà "banana", le résultat ne l'inclut qu'une seule fois. C'est la propriété fondamentale d'un ensemble : pas de doublons.

L'opérateur |

Le pipe | est l'équivalent opérateur de union(). Il produit le même résultat et est souvent plus lisible dans les expressions.

set1 = {"apple", "banana", "cherry"}
set2 = {"orange", "banana", "mango"}

set3 = set1 | set2
print(set3)

Sortie :

{'apple', 'banana', 'cherry', 'mango', 'orange'}

Quand utiliser | plutôt que union() : utilisez | pour une expression rapide et lisible entre deux ensembles. Utilisez union() lorsque vous devez passer un autre itérable (comme une liste ou un tuple) directement — union() accepte tout itérable, alors que | exige que les deux opérandes soient des ensembles.

# union() accepts any iterable
set1 = {1, 2, 3}
result = set1.union([4, 5], (6,))   # list and tuple both work
print(result)

Sortie :

{1, 2, 3, 4, 5, 6}

Joindre des ensembles avec update()

update() ajoute tous les éléments d'un ou plusieurs autres ensembles (ou tout itérable) dans l'ensemble existant. Il modifie l'ensemble d'origine en place et retourne None.

Mettre à jour un ensemble avec un autre ensemble en Python

python— editable, runs on the server

Sortie :

{'apple', 'banana', 'cherry', 'mango', 'orange'}

Après cet appel, set1 a été agrandi pour inclure tous les éléments uniques de set2. set2 lui-même reste inchangé.

L'opérateur |=

|= est l'équivalent en place de update().

set1 = {"apple", "banana", "cherry"}
set2 = {"orange", "banana", "mango"}

set1 |= set2
print(set1)

Sortie :

{'apple', 'banana', 'cherry', 'mango', 'orange'}

Joindre plus de deux ensembles à la fois

union() et update() acceptent tous deux plusieurs arguments, ce qui permet de combiner de nombreux ensembles en un seul appel.

A = {1, 2, 3}
B = {3, 4, 5}
C = {5, 6, 7}

result = A.union(B, C)
print(result)

Sortie :

{1, 2, 3, 4, 5, 6, 7}

La même chose s'applique à update() :

A = {1, 2, 3}
B = {3, 4, 5}
C = {5, 6, 7}

A.update(B, C)
print(A)

Sortie :

{1, 2, 3, 4, 5, 6, 7}

Vous pouvez également chaîner l'opérateur | sur plusieurs ensembles :

result = {1, 2} | {3, 4} | {5, 6}
print(result)

Sortie :

{1, 2, 3, 4, 5, 6}

Méthodes en place associées pour joindre des ensembles

Le même schéma en place vs. nouvel ensemble s'applique à toutes les autres opérations sur les ensembles. Elles valent la peine d'être connues aux côtés de update().

intersection_update() et &=

Conserve uniquement les éléments qui apparaissent dans tous les ensembles spécifiés.

A = {1, 2, 3, 4}
B = {2, 3, 5}

A.intersection_update(B)
print(A)   # only elements in both A and B

Sortie :

{2, 3}

difference_update() et -=

Supprime chaque élément qui apparaît également dans l'autre ensemble.

A = {1, 2, 3, 4}
B = {2, 4}

A.difference_update(B)
print(A)   # elements in A that are not in B

Sortie :

{1, 3}

symmetric_difference_update() et ^=

Conserve uniquement les éléments qui apparaissent dans exactement un des deux ensembles — les éléments partagés par les deux sont supprimés.

A = {1, 2, 3}
B = {2, 3, 4}

A.symmetric_difference_update(B)
print(A)   # elements in A or B, but not in both

Sortie :

{1, 4}

union() vs update() — Lequel utiliser ?

Utilisez union() (ou |) lorsque vous souhaitez conserver les ensembles d'origine intacts et travailler avec le résultat combiné comme une valeur distincte. C'est le bon choix dans les expressions, les valeurs de retour de fonctions, et partout où l'immuabilité est importante.

Utilisez update() (ou |=) lorsque vous construisez un ensemble de façon incrémentale et n'avez pas besoin de préserver l'original. Il utilise légèrement moins de mémoire car il ne crée pas d'objet supplémentaire.

# Reading pattern: create a single combined set from several sources
all_tags = set()
for article in articles:
    all_tags.update(article["tags"])   # update() is natural here

Sujets associés

  • Python Sets — ce que sont les ensembles, comment les créer et leurs propriétés clés
  • Add Set Items — ajouter des éléments individuels et en masse à un ensemble
  • Remove Set Itemsremove(), discard(), et pop()
  • Access Set Items — test d'appartenance et itération
  • Loop Sets — itérer sur les éléments d'un ensemble avec for
  • Set Methods — référence complète de toutes les méthodes d'ensemble intégrées

Pratique

Pratique
Which of the following statements about joining sets in Python are correct?
Which of the following statements about joining sets in Python are correct?
Was this page helpful?