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
| Objectif | Méthode | Opérateur | Modifie l'original ? |
|---|---|---|---|
| Nouvel ensemble avec tous les éléments | union() | | | Non — retourne un nouvel ensemble |
| Ajouter tous les éléments en place | update() | |= | Oui |
| Nouvel ensemble — éléments communs uniquement | intersection() | & | Non |
| Conserver uniquement les éléments communs | intersection_update() | &= | Oui |
| Nouvel ensemble — éléments absents de l'autre | difference() | - | Non |
| Supprimer les éléments présents dans l'autre | difference_update() | -= | Oui |
| Nouvel ensemble — éléments dans l'un mais pas les deux | symmetric_difference() | ^ | Non |
| Conserver les éléments dans l'un mais pas les deux | symmetric_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
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
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 BSortie :
{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 BSortie :
{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 bothSortie :
{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 hereSujets 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 Items —
remove(),discard(), etpop() - 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