Jak używać obiektów zamrożonych w Pythonie

Jak używać obiektów zamrożonych w Pythonie

W tym artykule obejmie przewodnik na temat korzystania z funkcji „Frozenset” w Pythonie, która zwraca nowy obiekt Python typu Frozenset. Te obiekty są podobne do ustawionych obiektów dostępnych w Python z pewnymi kluczowymi różnicami. Wszystkie próbki kodu w tym artykule są testowane z Python 3.9.5 na Ubuntu 21.04.

O mrożonkach

Funkcja Frozenset bierze jeden argument iterabilnego obiektu Python i zwraca nowy obiekt Python typu zamrożonego. Obiekt typu Frozenset jest haszalnym i niezmiennym obiektem Pythona, którego elementy są zamrożone lub niezmienne przez całe życie. W przeciwieństwie do zestawu Python typu, którego elementy można zmienić w dowolnym momencie, wszystkie elementy w zamrożonym czasie pozostają stałe. Wykorzystanie zamrożonych można najlepiej zrozumieć za pomocą przykładów. Niektóre z nich są wyjaśnione poniżej.

Tworzenie nowego obiektu zamrożonego

Aby uzyskać nowy Obiekt typu Frozenset, Po prostu dostarcz dowolny typowy typ jako opcjonalny argument funkcji Frozenset. Oto próbka kodu:

L = [1, 2, 3, 4]
fset = Frozenset (L)
Drukuj (FSET)
print (typ (fset))

Pierwsze oświadczenie w kodzie definiuje nową listę, która nazywa się po prostu „L”. Następnie nowy Frozenset Obiekt jest tworzony przez wywołanie funkcji Frozenset i dostarczanie listy jako argumentu. Po uruchomieniu powyższej próbki kodu należy uzyskać następujące dane wyjściowe:

Frozenset (1, 2, 3, 4)

Jak widać na wyjściu, FSet to Frozenset Wpisz obiekt i używa składni Curly Braces używanej przez zestawy również w Pythonie. Mrożone zawierają unikalne elementy tylko, gdy duplikaty są niedozwolone, ponownie bardzo podobne do obiektów typu Python Set. Każdy Frozenset Typ obiekt jest zestawem Python, ale odwrotnie nie jest prawdą, ponieważ elementy zestawu można zmienić, wywołując niektóre metody. Zauważ, że możesz utworzyć pusty Frozenset Wzywając Frozenset Funkcja bez żadnego argumentu.

Po utworzeniu nie można zmodyfikować zamrożonego

Jak wspomniano wcześniej, Frozenset Typ obiekt ma elementy, które nie zmieniają się w ciągu swojego życia. Podczas gdy możesz używać metod dostępnych dla zestawów Python z obiektami typu Frozenset, pojawia się błąd, jeśli spróbujesz użyć metody, która zmienia oryginał Frozenset sam obiekt. Oto przykład:

L = [1, 2, 3, 4]
new_set = set (l)
nowy zestaw.Usuń (1)
print (new_set)
fset = Frozenset (L)
fset.Usuń (1)

W powyższej próbce kodu istnieją dwa stwierdzenia, w których „usunąć„Metoda ustawiania obiektów typu jest wywoływana. Podczas gdy przedmiot jest pomyślnie usuwany z „nowy zestaw„Błąd pojawia się, gdy wywołuje metoda usuwania”fset". Po uruchomieniu powyższej próbki kodu należy uzyskać następujące dane wyjściowe:

2, 3, 4
Traceback (najnowsze połączenie ostatnie):
Plik ”główny.py ", linia 9, w
fset.Usuń (1)
AtrybuteError: „Frozenset” Obiekt nie ma atrybutu „Usuń”

Inne podobne metody, takie jak „Add”, „Pop”, „Clear”, „Odrzuć” i tak dalej nie będzie działać z branżą.

Metody działające z zamrożonymi

Wszystkie metody ustawione w Python, które nie modyfikują elementów zestawu zestawu Frozenset Wpisz obiekty. Możesz więc porównać dwa zamrożone dla równości lub nierówności, iterować / pętlę, uzyskać wspólne lub unikalne elementy między dwoma zamrożonymi itd. Poniżej znajduje się przykład pokazujący niektóre metody działające z zamrożonymi.

FSET1 = Frozenset ([1, 2, 3, 4])
FSET2 = Frozenset ([3, 4, 5, 6])
Drukuj (FSET1.przecięcie (FSET2))
Drukuj (FSET1.Union (FSET2))
Drukuj (FSET1.różnica (FSET2))
druk (len (fset1))
druk (len (fset2))

Kod jest samozadowolenia. Niektóre metody, które nie zmieniają wartości oryginału mrożone zostały wezwane. Metody te były stosowane głównie do porównywania elementów dwóch różnych mrożone. Po uruchomieniu powyższej próbki kodu należy uzyskać następujące dane wyjściowe:

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

Niektóre z innych metod, które działają z zamrożonymi zestawami to: „issubSet”, „EssUperset”, „Symmetric_difference”, „Kopia” i tak dalej. Operatorzy równości, tacy jak „>”, „=” i „<=” also work with frozenset type objects.

Mrożone można przekonwertować na inne type typy

Możesz konwertować Frozenset Wpisz obiekty do innych iterabinów, wywołując ich główny konstruktor. Poniższa próbka kodu pokazuje konwersję Frozenset Wpisz obiekty do listy, krotek i ustawiania obiektów typu.

fset = zamrożony ([1, 2, 3, 4])
drukuj (lista (fset))
druk (krotek (fset))
drukuj (SET (FSET))

Po uruchomieniu powyższej próbki kodu należy uzyskać następujące dane wyjściowe:

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

Przypadki użycia mrożonego

Jak Frozenset Obiekty są niczym innym jak niezmiennym / niezmiennym typem typu Python, możesz zastanawiać się nad ich użytecznością, ponieważ zestawy można zawsze używać na ich miejscu. Najbardziej oczywistym przypadku użycia mrożone dotyczy deklarowania ustalonych obiektów typu o unikalnych elementach bez ryzyka przypadkowej zmiany ich w dalszej części kodu. Frozenset Typ obiektów można używać jako kluczy słownika, podczas gdy zbiórki nie mogą być używane w tym samym celu. Ponieważ mrożone są haszalne, można je używać w zestawach, podczas gdy zestawów nie można wstawić w innym zestawie. Spójrz na poniższy kod:

fset = Frozenset (4, 5)
s = 1, 2, fset
wydruk (y)
s = 1, 2, 4, 5

W drugim stwierdzeniu a Frozenset został dodany do zestawu podczas tworzenia. W ostatniej instrukcji obiekt typu zestawu jest używany w innym zestawie. Po uruchomieniu powyższej próbki kodu należy uzyskać następujące dane wyjściowe:

Frozenset (4, 5), 1, 2
Traceback (najnowsze połączenie ostatnie):
Plik ”główny.py ", wiersz 27, w
s = 1, 2, 4, 5
TypeError: Typ nieskryskulny: „Ustaw”

Jak widać na wyjściu, broszówki można dodać do innych zestawów. Z drugiej strony dodanie zestawu do innego zestawu rzuca błąd, ponieważ zestawy akceptują tylko elementy typu skrót.

Wniosek

Mrożone Zapewnij sposób na tworzenie niezmiennych zestawów. Akceptują tylko unikalne elementy i są obiektami typu haszbilne, dzięki czemu można je używać w innych obiektach Python, które akceptują obiekty haszalne jako swoje dzieci.