%% nav-debut : généré par gen_navigation.py, ne pas modifier à la main %% > [!nav] > ↩ [[Code et Développement/Programmation/Lecture de Code - Python/Lecture de code - Python|Accueil · Lecture de code - Python]] > > | [[Code et Développement/Programmation/Lecture de Code - Python/09_tuples\|← Tuples]] | [[Code et Développement/Programmation/Lecture de Code - Python/11_dictionnaires\|Dictionnaires →]] | > |:---|---:| %% nav-fin %% # Ensembles (set) Un ensemble est une collection **non ordonnée** de valeurs **uniques** (sans doublons). > [!warning] Ordre d'affichage > L'ordre dans lequel Python affiche un ensemble n'est pas garanti. Il peut changer d'une exécution à l'autre. Pour obtenir une sortie prévisible, on trie : `sorted(s)` renvoie une liste triée. Une question de test ne demande jamais d'afficher un ensemble non trié. --- ## Création ```python s = {1, 2, 3} s = set() # ensemble vide ({} crée un dictionnaire) s = set([3, 1, 4, 1, 5, 9, 2]) # contient 1, 2, 3, 4, 5, 9 : le doublon 1 disparaît s = set("bonjour") # contient b, o, n, j, u, r : lettres uniques ``` --- ## Opérations de base ```python s = {1, 2, 3} s.add(4) # s contient 1, 2, 3, 4 s.remove(2) # s contient 1, 3, 4 ; KeyError si l'élément est absent s.discard(99) # pas d'erreur si l'élément est absent len(s) # vaut 3 3 in s # vaut True ``` --- ## Opérations ensemblistes ```python a = {1, 2, 3, 4} b = {3, 4, 5, 6} sorted(a | b) # union : vaut [1, 2, 3, 4, 5, 6] sorted(a & b) # intersection : vaut [3, 4] sorted(a - b) # différence : vaut [1, 2] sorted(a ^ b) # différence symétrique : vaut [1, 2, 5, 6] ``` --- ## Parcours ```python for x in {3, 1, 2}: print(x) # ordre non garanti for x in sorted({3, 1, 2}): print(x) # affiche 1, puis 2, puis 3 ``` --- ## Cas d'usage typiques ```python # Supprimer les doublons d'une liste lst = [1, 2, 2, 3, 3, 3] unique = sorted(set(lst)) # vaut [1, 2, 3] # Compter les lettres distinctes mot = input() print(len(set(mot))) # Tester l'appartenance (plus rapide qu'avec une liste) voyelles = {'a', 'e', 'i', 'o', 'u'} print('e' in voyelles) # affiche True ``` ## À vous **À manipuler :** prédisez la sortie, ligne par ligne. ```sq-affiche lst = [4, 1, 4, 2, 1] s = set(lst) print(len(s)) print(sorted(s)) print(3 in s) --- saisie: lignes réponse: 3\n[1, 2, 4]\nFalse explication: set supprime les doublons : il reste 1, 2 et 4. sorted renvoie une liste triée. ``` ```sq-affiche a = {1, 2, 3} b = {2, 3, 4} print(sorted(a & b)) print(sorted(a | b)) print(len(a - b)) --- saisie: lignes réponse: [2, 3]\n[1, 2, 3, 4]\n1 explication: & garde les éléments communs, | les réunit, a - b garde les éléments de a absents de b (ici 1). ``` %% nav-debut : généré par gen_navigation.py, ne pas modifier à la main %% > [!nav] > ↩ [[Code et Développement/Programmation/Lecture de Code - Python/Lecture de code - Python|Accueil · Lecture de code - Python]] > > | [[Code et Développement/Programmation/Lecture de Code - Python/09_tuples\|← Tuples]] | [[Code et Développement/Programmation/Lecture de Code - Python/11_dictionnaires\|Dictionnaires →]] | > |:---|---:| %% nav-fin %%