Comment utiliser des objets Frozenset dans Python

Comment utiliser des objets Frozenset dans Python

Cet article couvrira un guide sur l'utilisation de la fonction «Frozenset» dans Python qui renvoie un nouvel objet Python de type Frozenset Frozenset. Ces objets sont similaires à définir des objets disponibles dans Python avec quelques différences clés. Tous les échantillons de code de cet article sont testés avec Python 3.9.5 sur Ubuntu 21.04.

À propos de Frozenset

Le fonction Frozenset prend un argument d'un objet Python de type itérable et renvoie un nouvel objet Python de type Frozenset Frozenset. Un objet de type Frozenset est un objet Python hashable et immuable dont les éléments sont gelés ou immuables tout au long de leur vie. Contrairement à un objet Python de type set dont les éléments peuvent être modifiés à tout moment, tous les éléments d'un ensemble Frozenset restent constants. L'utilisation des Frozenset peut être mieux comprise à travers des exemples. Certains d'entre eux sont expliqués ci-dessous.

Création d'un nouvel objet Frozenset

Pour obtenir un nouveau objet de type Frozenset, Affichez simplement n'importe quel type itérable comme argument facultatif à la fonction Frozenset. Voici un exemple de code:

l = [1, 2, 3, 4]
fset = Frozenset (L)
imprimer (fset)
imprimer (type (fset))

La première instruction du code définit une nouvelle liste qui s'appelle simplement «L». Ensuite, un nouveau floraison L'objet est créé en appelant la fonction FrozenSet et en fournissant la liste comme argument. Après avoir exécuté l'échantillon de code ci-dessus, vous devriez obtenir la sortie suivante:

Frozenset (1, 2, 3, 4)

Comme vous pouvez le voir dans la sortie, FSET est un floraison Tapez l'objet et il utilise la syntaxe des accolades bouclées utilisées par les ensembles également dans Python. Freenset contenir des éléments uniques uniquement car les doublons ne sont pas autorisés, encore une fois très similaire aux objets de type de jeu Python. Chaque floraison L'objet de type est un ensemble python mais vice versa n'est pas vrai car les éléments définis peuvent être modifiés en appelant certaines méthodes. Notez que vous pouvez créer un vide floraison en appelant le floraison fonction sans aucun argument.

Vous ne pouvez pas modifier un Frozenset une fois créé

Comme indiqué précédemment, un floraison L'objet de type a des éléments qui ne changent pas au cours de leur vie. Bien que vous puissiez utiliser des méthodes disponibles pour les ensembles de python avec des objets de type Frozenset, une erreur est lancée si vous essayez d'utiliser une méthode qui modifie l'original floraison s'opposer. Voici un exemple:

l = [1, 2, 3, 4]
new_set = set (l)
new_set.Retirer (1)
print (new_set)
fset = Frozenset (L)
fset.Retirer (1)

Dans l'échantillon de code ci-dessus, il y a deux déclarations où le «retirer”La méthode des objets de type set est appelée. Alors qu'un élément est supprimé avec succès de «new_set", Une erreur est lancée lorsque la méthode de suppression est appelée"fset". Après avoir exécuté l'échantillon de code ci-dessus, vous devriez obtenir la sortie suivante:

2, 3, 4
Traceback (dernier appel dernier):
Fichier "principal.py ", ligne 9, dans
fset.Retirer (1)
AttributeError: l'objet 'FrozenSet' n'a pas d'attribut 'supprimer'

D'autres méthodes similaires comme «Add», «Pop», «Clear», «Discard», et ainsi de suite ne fonctionnera pas avec Forzenset.

Méthodes qui fonctionnent avec des Frozenset

Toutes les méthodes de définition Python qui ne modifient pas les éléments d'un jeu avec floraison taper des objets. Ainsi, vous pouvez comparer deux Frozenset pour les égalités ou les inégalités, itérer / boucle à travers eux, obtenir des éléments communs ou uniques entre deux Frozenset, etc. Vous trouverez ci-dessous un exemple montrant certaines des méthodes qui fonctionnent avec Frozenset.

fset1 = Frozenset ([1, 2, 3, 4])
fset2 = Frozenset ([3, 4, 5, 6])
Imprimer (fset1.intersection (fset2))
Imprimer (fset1.Union (fset2))
Imprimer (fset1.différence (fset2))
imprimer (len (fset1))
print (len (fset2))

Le code est explicite. Certaines méthodes qui ne modifient pas les valeurs d'origine Freenset ont été appelés. Ces méthodes ont été principalement utilisées pour comparer les éléments de deux Freenset. Après avoir exécuté l'échantillon de code ci-dessus, vous devriez obtenir la sortie suivante:

Frozenset (3, 4)
Frozenset (1, 2, 3, 4, 5, 6)
Frozenset (1, 2)
4
4

Certaines des autres méthodes qui fonctionnent avec des ensembles congelés sont: «issubset», «issuperset», «symetric_diférence», «copie», etc. Les opérateurs d'égalité comme «>», «=» et «<=” also work with frozenset type objects.

Les Frozenset peuvent être convertis en d'autres types itérables

Vous pouvez convertir floraison Tapez des objets à d'autres itérables en appelant leur constructeur principal. L'exemple de code ci-dessous montre la conversion de floraison Tapez des objets à répertorier, tuple et définir des objets de type.

fset = Frozenset ([1, 2, 3, 4])
imprimer (liste (fset))
imprimer (tuple (fset))
imprimer (set (fset))

Après avoir exécuté l'échantillon de code ci-dessus, vous devriez obtenir la sortie suivante:

[1, 2, 3, 4]
(1, 2, 3, 4)
1, 2, 3, 4

Cas d'utilisation Frozenset

Comme floraison Les objets ne sont rien d'autre que des objets Python de type ensemble inchangeable / immuable, vous vous demandez peut-être sur leur utilité car les ensembles peuvent toujours être utilisés à leur place. Le cas d'utilisation le plus évident de Freenset est pour déclarer des objets de type set avec des éléments uniques sans risque de les modifier accidentellement plus tard dans le code. Floraison Les objets de type peuvent être utilisés comme clés de dictionnaire tandis que les ensembles ne peuvent pas être utilisés dans le même but. Étant donné que les Frozenset sont présentables, ils peuvent être utilisés dans des ensembles, tandis que les ensembles ne peuvent pas être insérés dans un autre ensemble. Jetez un œil au code ci-dessous:

fset = FrozenSet (4, 5)
S = 1, 2, fset
imprimer (s)
S = 1, 2, 4, 5

Dans la deuxième déclaration, un floraison a été ajouté à un ensemble pendant la création. Dans la dernière instruction, un objet de type set est utilisé dans un autre ensemble. Après avoir exécuté l'échantillon de code ci-dessus, vous devriez obtenir la sortie suivante:

FrozenSet (4, 5), 1, 2
Traceback (dernier appel dernier):
Fichier "principal.py ", ligne 27, dans
S = 1, 2, 4, 5
TypeError: Type incompétent: «Set»

Comme vous pouvez le voir dans la sortie, forzenset peut être ajouté à d'autres ensembles. D'un autre côté, l'ajout d'un ensemble à un autre ensemble lance une erreur car les ensembles acceptent uniquement les éléments de type hashable.

Conclusion

Freenset fournir un moyen de créer des ensembles immuables. Ils acceptent uniquement des éléments uniques et sont des objets de type hashable afin qu'ils puissent être utilisés dans d'autres objets Python qui n'acceptent que des objets hashable comme leurs enfants.