Explication de la leçon
Après cette leçon, tu seras capable de :
Un ensemble (set) stocke des valeurs uniques. Les entrées en double se réduisent à un seul élément, de sorte que les ensembles sont utiles pour les tags, les permissions et la recherche d'identifiants manquants. Les ensembles n'ont pas de positions significatives : ne dépends jamais de l'ordre d'itération et n'essaie jamais de lire items[0] depuis un ensemble.
Utilise {value1, value2} pour créer un ensemble non vide et set() pour en créer un vide ({} crée un dictionnaire vide). add(value) insère une valeur. discard(value) supprime une valeur si elle est présente et ne fait rien si elle est absente ; contrairement à remove(value), elle ne lève pas d'erreur si la valeur est manquante.
L'appartenance s'exprime avec value in items. Les opérations sur les ensembles répondent à des questions utiles : a | b combine toutes les valeurs uniques ; a & b trouve les valeurs partagées ; a - b ne conserve que les valeurs présentes dans a. Ces opérations renvoient de nouveaux ensembles plutôt que de modifier les opérandes.
L'identifiant répété ne compte que comme un seul membre.
regions = {"us", "eu", "us"}
print(len(regions))
print("eu" in regions)Sortie :
2
Truediscard() est sûr même si la valeur est déjà absente.
roles = {"reader"}
roles.add("editor")
roles.discard("owner")
print(len(roles))
print("editor" in roles)Sortie :
2
TrueL'intersection compte les valeurs partagées ; l'union compte tout ce qui est présent dans l'un ou l'autre ensemble.
online = {"api", "worker", "cache"}
monitored = {"cache", "mailer"}
print(len(online & monitored))
print(len(online | monitored))Sortie :
1
4La différence conserve les valeurs qui n'ont pas été accordées.
required = {"read", "write", "deploy"}
granted = {"read", "deploy"}
print(len(required - granted))Sortie :
1| Besoin | Opération |
|---|---|
| Ensemble vide | set() |
| Ajouter une valeur | items.add(value) |
| Supprimer en toute sécurité | items.discard(value) |
| Tester l'appartenance | value in items |
| Combiner les éléments uniques | `a |
| Éléments partagés | a & b |
| Éléments uniquement à gauche | a - b |
{} est un dictionnaire vide, pas un ensemble vide.append() appartient aux listes, pas aux ensembles.remove() lève KeyError pour un élément absent ; utilise discard() lorsque l'absence est acceptable.a - b n'est pas identique à b - a.