Python - Ensembles
Bonjour, aspirants programmeurs Python !aujourd'hui, nous allons plonger dans le merveilleux monde des ensembles Python. En tant que votre enseignant de sciences informatiques de quartier, je suis excité de vous guider à travers ce voyage. Alors, prenez votre boisson préférée, mettez-vous à l'aise, et explorons les ensembles ensemble !
Ensembles en Python
Imaginez que vous avez un sac de billes colorées. Chaque bille est unique, et vous ne vous souciez pas de l'ordre dans lequel elles sont - vous voulez simplement savoir quelles couleurs vous avez. C'est essentiellement ce qu'est un ensemble en Python !
Un ensemble est une collection non ordonnée d'éléments uniques. C'est comme un ensemble mathématique : pas de doublons autorisés, et l'ordre n'a pas d'importance. Les ensembles sont extrêmement utiles lorsque vous avez besoin de stocker des éléments uniques ou d'effectuer des opérations sur les ensembles comme l'union, l'intersection et la différence.
Création d'un Ensemble en Python
Commençons par créer notre premier ensemble. Il y a deux principales méthodes pour créer un ensemble en Python :
- Utiliser des accolades {}
- Utiliser le constructeur set()
Voici un exemple des deux méthodes :
# Méthode 1 : Utiliser des accolades
fruits = {'pomme', 'banane', 'cerise'}
# Méthode 2 : Utiliser le constructeur set()
couleurs = set(['rouge', 'vert', 'bleu'])
print(fruits)
print(couleurs)
Sortie :
{'cerise', 'pomme', 'banane'}
{'bleu', 'rouge', 'vert'}
Notez comment l'ordre des éléments dans la sortie peut être différent de celui que nous avons défini. C'est parce que les ensembles sont non ordonnés !
Éléments Dupliqués dans un Ensemble
Souvenez-vous quand je vous disais que les ensembles ne contiennent que des éléments uniques ? Voyons ce qui se passe lorsque nous essayons d'ajouter des doublons :
nombres = {1, 2, 3, 2, 4, 3, 5}
print(nombres)
Sortie :
{1, 2, 3, 4, 5}
Comme vous pouvez le voir, Python supprime automatiquement les doublons pour nous. N'est-ce pas génial ?
Ajout d'Éléments dans un Ensemble
Pour ajouter un seul élément à un ensemble, nous utilisons la méthode add()
. Si nous voulons ajouter plusieurs éléments à la fois, nous utilisons la méthode update()
.
# Ajout d'un seul élément
fruits.add('orange')
print(fruits)
# Ajout de plusieurs éléments
fruits.update(['raisin', 'mangue'])
print(fruits)
Sortie :
{'cerise', 'pomme', 'banane', 'orange'}
{'cerise', 'mangue', 'pomme', 'banane', 'orange', 'raisin'}
Suppression d'Éléments d'un Ensemble
Il y a plusieurs moyens de supprimer des éléments d'un ensemble. Explorons-les :
# Utiliser remove() - lève une erreur si l'élément n'existe pas
fruits.remove('banane')
# Utiliser discard() - ne lève pas d'erreur si l'élément n'existe pas
fruits.discard('kiwi')
# Utiliser pop() - supprime et renvoie un élément arbitraire
popped = fruits.pop()
print(f"Élément éjecté : {popped}")
# Utiliser clear() - supprime tous les éléments
fruits.clear()
print(fruits)
Sortie :
Élément éjecté : cerise
set()
Test de Membership dans un Ensemble
L'un des grands avantages des ensembles est qu'ils permettent des tests de membership très rapides. Nous pouvons utiliser le mot-clé in
pour vérifier si un élément existe dans un ensemble :
nombres = {1, 2, 3, 4, 5}
print(3 in nombres) # True
print(6 in nombres) # False
Cette opération est beaucoup plus rapide avec les ensembles que avec les listes, surtout pour de grandes collections !
Opérations sur les Ensembles
Les ensembles en Python supportent diverses opérations sur les ensembles mathématiques. Regardons quelques-unes d'entre elles :
ensemble1 = {1, 2, 3, 4, 5}
ensemble2 = {4, 5, 6, 7, 8}
# Union
print(ensemble1 | ensemble2) # ou ensemble1.union(ensemble2)
# Intersection
print(ensemble1 & ensemble2) # ou ensemble1.intersection(ensemble2)
# Différence
print(ensemble1 - ensemble2) # ou ensemble1.difference(ensemble2)
# Différence Symétrique
print(ensemble1 ^ ensemble2) # ou ensemble1.symmetric_difference(ensemble2)
Sortie :
{1, 2, 3, 4, 5, 6, 7, 8}
{4, 5}
{1, 2, 3}
{1, 2, 3, 6, 7, 8}
Compréhensions d'Ensembles en Python
Tout comme les compréhensions de listes, Python supporte également les compréhensions d'ensembles. Elles fournissent une manière concise de créer des ensembles basés sur des objets itérables existants.
# Création d'un ensemble de carrés de nombres de 0 à 9
carrés = {x**2 for x in range(10)}
print(carrés)
Sortie :
{0, 1, 4, 9, 16, 25, 36, 49, 64, 81}
Filtrage d'Éléments Utilisant les Compréhensions d'Ensembles
Nous pouvons également utiliser les compréhensions d'ensembles pour filtrer des éléments :
# Création d'un ensemble de carrés pairs de 0 à 9
carrés_pairs = {x**2 for x in range(10) if x % 2 == 0}
print(carrés_pairs)
Sortie :
{0, 4, 16, 36, 64}
Compréhensions d'Ensembles Imbriquées
Bien que moins courantes, les compréhensions d'ensembles imbriquées sont également possibles :
# Création d'un ensemble de paires (x, y) où x et y sont des digits
paires_de_chiffres = {(x, y) for x in range(3) for y in range(3)}
print(paires_de_chiffres)
Sortie :
{(0, 1), (1, 2), (0, 0), (2, 0), (1, 1), (2, 2), (0, 2), (2, 1), (1, 0)}
Ensembles Figés
Enfin, parlons des ensembles figés. Un ensemble figé est une version immuable d'un objet ensemble Python. Alors que les éléments d'un ensemble peuvent être modifiés à tout moment, les éléments d'un ensemble figé restent les mêmes après leur création.
ensemble_normal = {1, 2, 3}
ensemble_fige = frozenset([1, 2, 3])
ensemble_normal.add(4) # Cela fonctionne
# ensemble_fige.add(4) # Cela lèverait une AttributeError
Les ensembles figés sont particulièrement utiles lorsque vous avez besoin d'un ensemble immuable, comme l'utiliser comme clé de dictionnaire.
Et voilà, les amis ! Nous avons couvert tous les aspects des ensembles Python. Souvenez-vous, la pratique fait le maître, alors n'hésitez pas à expérimenter avec ces concepts. Bon codage !
Voici un tableau résumant les principales méthodes d'ensemble que nous avons discutées :
Méthode | Description |
---|---|
add() | Ajoute un élément à l'ensemble |
update() | Ajoute plusieurs éléments à l'ensemble |
remove() | Supprime un élément spécifique de l'ensemble (lève une erreur si non trouvé) |
discard() | Supprime un élément spécifique de l'ensemble (pas d'erreur si non trouvé) |
pop() | Supprime et renvoie un élément arbitraire de l'ensemble |
clear() | Supprime tous les éléments de l'ensemble |
union() | Renvoie un ensemble contenant l'union des ensembles |
intersection() | Renvoie un ensemble contenant l'intersection des ensembles |
difference() | Renvoie un ensemble contenant la différence des ensembles |
symmetric_difference() | Renvoie un ensemble avec des éléments dans l'un ou l'autre ensemble, mais pas les deux |
Credits: Image by storyset