Ensembles

En mathématiques, il existe une chose telle qu'un ensemble (ou théorie des ensembles). Peut-être les avez-vous même étudiés dans un cours de mathématiques. Vous connaissez peut-être même les diagrammes de Venn.
En pratique, un ensemble peut être considéré simplement comme un ensemble bien défini d'objets individuels, appelés éléments ou membres.
Le regroupement d'objets dans un ensemble peut être utile en programmation, et Python nous fournit le type intégré set.

Les ensembles (type ensemble) diffèrent des autres types d'objets par les opérations uniques qui peuvent être effectuées sur eux.

Le type intégré set en Python a les caractéristiques suivantes :
    Les éléments
  • d'un ensemble ne sont pas ordonnés (ce qui signifie que deux ensembles sont équivalents s'ils contiennent les mêmes éléments). Les éléments de l'ensemble ne sont pas stockés séquentiellement, mais selon certains algorithmes qui permettent de déterminer rapidement si un élément appartient à un ensemble (sans énumération de tous les éléments) ;
  • les éléments d'ensemble sont uniques. Les éléments en double ne sont pas autorisés ;
  • les ensembles sont modifiables (par exemple, vous pouvez ajouter un élément à un ensemble), mais les éléments eux-mêmes à l'intérieur de l'ensemble doivent être immuables (nombres, chaînes, tuples). Vous ne pouvez pas faire d'une liste ou d'un autre ensemble un élément d'un ensemble ;

 

Créer un ensemble
1 sens

Énumérer simplement entre accolades les éléments de l'ensemble.

x = {"école", "professeur", "classe", élève}
 

Bidirectionnel 
Utilisez la fonction intégrée set(). x = set()    # ensemble vide list_name = ["Andry", "Bob", "Caroline"] y = set(nom_liste)    # vous pouvez créer plusieurs                        # depuis n'importe quel objet itérable z = set(["Andry", "Bob", "Caroline"])     # {"Bob", "Caroline", "Andry"} k = set(("Andry", "Bob", "Caroline"))     # {"Bob", "Caroline", "Andry"} s = "chaîne s" m = ensemble(s)    # {'i', 't', 'g', 'r', 'n', & #39;s', ' '} -                # Faites attention !                # l'ordre des éléments peut être quelconque,               # éléments ne sont pas répétés n = {42, 'foo', 3.14159, Aucun, (1, 2, 3)}    # éléments dans                                                # peut être de différents types  
Définir la sortie
Les éléments de l'ensemble sont affichés dans un ordre arbitraire, pas nécessairement dans l'ordre dans lequel ils sont ajoutés. z = set(["Andry", "Bob", "Caroline"])  imprimer(z)    # {"Bob", "Caroline", "Andry"} imprimer(*z)    # Bob Andry Caroline

Méthodes pour travailler avec des ensembles


Nombre d'éléments dans l'ensemble
La méthode len() renvoie le nombre d'éléments dans l'ensemble. k = {42, 'foo', 3.14159, Aucun, (1, 2, 3)}  print(len(k))    #5

 

Déterminer si un élément est dans un ensemble (appartenance dans)
k = {42, 'foo', 3.14159, Aucun, (1, 2, 3)}  impression(42 en k)    # Vrai print(2 en k)     # Faux
Bien que les éléments contenus dans un ensemble doivent être d'un type immuable, les ensembles eux-mêmes peuvent être modifiés. 

 

Ajouter un élément à l'ensemble
x.add(<elem>)
à l'ensemble  x ajoute <elem> qui doit être le seul objet immuable.

 

Supprimer un élément d'un ensemble
1) x.remove(<elem>)
<elem>  est supprimé de l'ensemble x. Python lève une exception (erreur) si <elem> n'est pas dans x.

2) x.discard(<elem>)
le même supprime, mais en cas d'absence d'un élément dans l'ensemble, il ne lève pas d'exception.

3) x.pop()
supprime et renvoie un élément aléatoire de l'ensemble. Si l'ensemble est initialement vide, une exception (erreur) se produit.

4) x.clear()
supprime tous les éléments de l'ensemble (efface l'ensemble).

Définir le tri ?

Comme on le sait, l'ordre des éléments dans l'ensemble n'est pas pris en compte. Alors est-il logique de parler d'ensembles de tri en Python 3 ? ! (C'est pourquoi il y a un point d'interrogation dans le titre)

Pour retrouver rapidement un élément dans un ensemble, il est souhaitable de les stocker en mémoire sous une forme ordonnée.

Regardons quelques exemples. Qu'advient-il des éléments de différents types de données dans le même ensemble ? Ces éléments ne doivent pas être triés. Si nous imprimons des éléments à l'aide de la commande print(), ils seront affichés comme ceci :

a = {0, 1, 12, "b", "ab", 3, 2, "a"} print(a) # {0, 1, 2, 3, 'a', 12, 'b', 'ab'} Dans ce cas, des valeurs non triées sont affichées. Si vous répétez le lancement, l'ordre de sortie peut être différent. Mais ce n'est que si des éléments de types différents sont mélangés.

Essayons d'afficher des données d'un type (par exemple, uniquement des nombres) : un = {0, 1, 12, 3, 2} imprimer(a) # {0, 1, 2, 3, 12} Tous les éléments sont affichés dans l'ordre. Essayons de le convertir en liste : un = {0, 1, 12, 3, 2} b = liste(a) print(b) # [0, 1, 2, 3, 12] De même, les éléments triés par ordre croissant étaient écrits dans la liste.

Il s'avère que les éléments sont stockés en mémoire sous une forme ordonnée s'ils sont du même type. Mais mieux vaut ne pas compter dessus, les algorithmes Python peuvent changer.

Si vous avez besoin d'obtenir une liste triée à partir d'un ensemble, il est préférable d'utiliser le sort (< code>sorted) fonction pour être sûr ). Les éléments seront exactement triés. Votre code sera compréhensible pour les autres.