Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Industrial programming >> Python

Maîtriser les ensembles Python : création, manipulation et opérations

Les ensembles Python

Découvrez comment le type de données set de Python simplifie la déduplication et les opérations ensemblistes. Ce guide couvre la création, modification, suppression et toutes les opérations essentielles sur les ensembles.

Vidéo : Les ensembles en Python

Un ensemble est une collection non ordonnée d'éléments uniques et immuables. Bien que l'ensemble lui-même soit mutable — permettant d'ajouter ou supprimer des éléments — ses éléments individuels doivent être hachables (ex. : nombres, chaînes, tuples).

Les ensembles Python supportent les opérations mathématiques d'ensembles comme l'union, l'intersection, la différence et la différence symétrique, les rendant idéaux pour la déduplication de données, les tests d'appartenance et l'algèbre ensembliste.


Créer des ensembles Python

Utilisez des accolades ou le constructeur intégré set() pour créer un ensemble. Les éléments peuvent être de tout type immuable, mais les types mutables comme les listes, dictionnaires ou autres ensembles ne peuvent pas être inclus.

# Exemple 1 : Ensembles avec différents types de données
# ensemble d'entiers
my_set = {1, 2, 3}
print(my_set)
# ensemble de types de données mixtes
my_set = {1.0, 'Bonjour', (1, 2, 3)}
print(my_set)

Sortie

{1, 2, 3} {1.0, (1, 2, 3), 'Bonjour'}

Remarquez comment les valeurs en double sont automatiquement supprimées et comment les tuples — étant immuables — sont acceptés.

# Suppression des doublons
my_set = {1, 2, 3, 4, 3, 2}
print(my_set)
# Construction d'un ensemble depuis une liste
my_set = set([1, 2, 3, 2])
print(my_set)
# Tenter d'inclure un élément mutable cause une erreur
# my_set = {1, 2, [3, 4]}  # TypeError: unhashable type: 'list'

Sortie

{1, 2, 3, 4} {1, 2, 3} Traceback (most recent call last): File "<string>", line 15, in <module> my_set = {1, 2, [3, 4]} TypeError: unhashable type: 'list'

La création d'un ensemble vide nécessite le constructeur set() ; utiliser {} crée un dictionnaire vide à la place.

# Différencier ensemble et dictionnaire lors de la création de structures vides
a = {}
print(type(a))
a = set()
print(type(a))

Sortie

<class 'dict'> <class 'set'>

Modifier un ensemble en Python

Les ensembles sont mutables, mais ils ne supportent pas l'indexation ou le tranchage en raison de leur nature non ordonnée.

Utilisez add() pour insérer un seul élément et update() pour fusionner un autre itérable dans l'ensemble. Les entrées en double sont automatiquement ignorées.

# Exemple : Ajout d'éléments
my_set = {1, 3}
print(my_set)
# Tenter d'indexer un ensemble lève une erreur
# my_set[0]  # TypeError: 'set' object does not support indexing
# Ajouter un seul élément
my_set.add(2)
print(my_set)
# Ajouter plusieurs éléments depuis une liste
my_set.update([2, 3, 4])
print(my_set)
# Combiner une liste et un autre ensemble
my_set.update([4, 5], {1, 6, 8})
print(my_set)

Sortie

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

Supprimer des éléments d'un ensemble

Utilisez discard() pour supprimer un élément s'il existe, ou ne rien faire sinon. En revanche, remove() lève une KeyError quand l'élément est absent.

# Exemple : Discard vs remove
my_set = {1, 3, 4, 5, 6}
print(my_set)
my_set.discard(4)
print(my_set)
my_set.remove(6)
print(my_set)
my_set.discard(2)
print(my_set)
# Ce qui suit lèvera KeyError
# my_set.remove(2)

Sortie

{1, 3, 4, 5, 6} {1, 3, 5, 6} {1, 3, 5} {1, 3, 5} Traceback (most recent call last): File "<string>", line 28, in <module> KeyError: 2

La méthode pop() supprime et retourne un élément arbitraire, tandis que clear() vide l'ensemble entièrement.

# Exemple pop et clear
my_set = set("BonjourMonde")
print(my_set)
print(my_set.pop())
print(my_set)
my_set.clear()
print(my_set)

Sortie

{'H', 'l', 'r', 'W', 'o', 'd', 'e'} H {'r', 'W', 'o', 'd', 'e'} set()

Opérations sur les ensembles Python

Les ensembles Python supportent l'algèbre ensembliste classique : union, intersection, différence et différence symétrique. Celles-ci peuvent être invoquées via des opérateurs ou des méthodes dédiées.

Utilisons deux ensembles d'exemple :

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

Union

Maîtriser les ensembles Python : création, manipulation et opérations

L'union de A et B combine tous les éléments distincts.

print(A | B)

Sortie

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

Intersection

Maîtriser les ensembles Python : création, manipulation et opérations

L'intersection retourne seulement les éléments communs aux deux ensembles.

print(A & B)

Sortie

{4, 5}

Différence

Maîtriser les ensembles Python : création, manipulation et opérations

La différence A - B liste les éléments présents dans A mais pas dans B.

print(A - B)

Sortie

{1, 2, 3}

Différence symétrique

Maîtriser les ensembles Python : création, manipulation et opérations

La différence symétrique A ^ B retourne les éléments qui sont dans l'un ou l'autre ensemble mais pas dans les deux.

print(A ^ B)

Sortie

{1, 2, 3, 6, 7, 8}

Méthodes supplémentaires des ensembles

Voici une référence rapide pour toutes les méthodes intégrées disponibles sur les objets set :

MéthodeDescription
add()Ajoute un élément à l'ensemble
clear()Supprime tous les éléments
copy()Retourne une copie superficielle
difference()Retourne un nouvel ensemble d'éléments présents dans l'appelant mais pas dans les autres
difference_update()Suppression de différence sur place
discard()Supprime l'élément s'il est présent ; pas d'erreur s'il est absent
intersection()Retourne un nouvel ensemble d'éléments communs
intersection_update()Mise à jour d'intersection sur place
isdisjoint()True si les ensembles n'ont aucun élément en commun
issubset()True si l'appelant est un sous-ensemble d'un autre ensemble
issuperset()True si l'appelant contient entièrement un autre ensemble
pop()Supprime et retourne un élément arbitraire ; KeyError si vide
remove()Supprime l'élément ; KeyError s'il est absent
symmetric_difference()Retourne un nouvel ensemble d'éléments exclusifs à chaque ensemble
symmetric_difference_update()Mise à jour de différence symétrique sur place
union()Retourne un nouvel ensemble contenant tous les éléments uniques
update()Union sur place avec un autre itérable

Test d'appartenance aux ensembles

Vérifiez l'existence d'un élément avec le mot-clé in.

my_set = set("pomme")
print('a' in my_set)   # True
print('p' not in my_set)  # False

Sortie

True False

Itérer sur un ensemble

Parcourez un ensemble avec une boucle for standard ; l'ordre n'est pas garanti.

for letter in set("pomme"):
    print(letter)

Fonctions intégrées avec les ensembles

Des fonctions comme len(), max(), min(), sum(), all(), any() et sorted() fonctionnent parfaitement avec les ensembles. Voici un tableau des utilitaires courants :

FonctionDescription
all()True si tous les éléments sont truthy (ou si l'ensemble est vide)
any()True si au moins un élément est truthy
enumerate()Itère avec un index, utile pour le débogage
len()Nombre d'éléments
max()Plus grand élément
min()Plus petit élément
sorted()Retourne une liste triée depuis l'ensemble
sum()Somme de tous les éléments numériques

Frozenset Python

Un frozenset est un homologue immuable d'un ensemble. Une fois créé, ses éléments ne peuvent pas changer, le rendant hachable et utilisable comme clé de dictionnaire.

A = frozenset([1, 2, 3, 4])
B = frozenset([3, 4, 5, 6])

Les opérations supportées reflètent celles des ensembles réguliers, sauf pour les méthodes de mutation.

print(A.isdisjoint(B))
print(A.difference(B))
print(A | B)
# Tenter d'ajouter un élément lève une AttributeError
# A.add(3)  # AttributeError: 'frozenset' object has no attribute 'add'

Python

  1. Maîtriser les types de données Python : Guide pratique
  2. Maîtriser les opérateurs Python : Guide complet
  3. Maîtriser l'instruction pass en Python : Guide pratique
  4. Maîtriser les arguments de fonctions Python : Positionnels, nommés et paramètres par défaut
  5. Maîtriser les dictionnaires Python : création, manipulation et techniques avancées
  6. Maîtriser les itérateurs Python : fonctionnement et création des vôtres
  7. Les fermetures Python expliquées : comment les fonctions imbriquées capturent les variables
  8. Maîtriser Python datetime : guide pratique pour les dates, heures et fuseaux horaires
  9. Python : Aperçu - Langage de haut niveau, lisible, interactif et orienté objet