logo

Zestawy w Pythonie

Zestaw w programowaniu w języku Python to nieuporządkowany typ danych kolekcji, który można iterować, modyfikować i nie zawiera duplikatów elementów.

Zbiór jest reprezentowany przez { } (wartości ujęte w nawiasy klamrowe)



Główną zaletą korzystania z zestawu, w przeciwieństwie do lista , polega na tym, że posiada wysoce zoptymalizowaną metodę sprawdzania, czy określony element znajduje się w zestawie. Opiera się to na strukturze danych znanej jako tablica mieszająca. Ponieważ zbiory są nieuporządkowane, nie możemy uzyskać dostępu do elementów za pomocą indeksów, tak jak to robimy w przypadku list.

Przykład zestawów Pythona

Python3








var>=> {>'Geeks'>,>'for'>,>'Geeks'>}> type>(var)>

>

>

różnica między tablicą a listą tablic

Wyjście:

set>

Złożoność czasowa: O(1)
Przestrzeń pomocnicza: O(1)

Wpisz rzutowanie za pomocą metody Python Set

Do rzutowania typów używana jest metoda Python set().

Python3




# typecasting list to set> myset>=> set>([>'a'>,>'b'>,>'c'>])> print>(myset)> # Adding element to the set> myset.add(>'d'>)> print>(myset)>

>

>

Wyjście:

Zbiór Pythona jest nieuporządkowanym typem danych, co oznacza, że ​​nie możemy wiedzieć, w jakiej kolejności przechowywane są elementy zestawu.

{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}>

Złożoność czasowa: O(n)
Przestrzeń pomocnicza: O(n)

Sprawdź unikalność i niezmienność za pomocą zestawu Pythona

Zestawy Pythona nie mogą mieć zduplikowanej wartości, a po utworzeniu nie można zmienić jej wartości.

Python3




# Python program to demonstrate that> # a set cannot have duplicate values> # and we cannot change its items> # a set cannot have duplicate values> myset>=> {>'Geeks'>,>'for'>,>'Geeks'>}> print>(myset)> # values of a set cannot be changed> myset[>1>]>=> 'Hello'> print>(myset)>

>

>

Wyjście:

Pierwszy kod wyjaśnia, że ​​zestaw nie może mieć zduplikowanej wartości. Każdy znajdujący się w nim przedmiot ma unikalną wartość.

Drugi kod generuje błąd, ponieważ po utworzeniu zestawu nie możemy przypisać ani zmienić wartości. Możemy jedynie dodawać lub usuwać elementy w zestawie.

{'Geeks', 'for'} TypeError: 'set' object does not support item assignment>

Element heterogeniczny z zestawem Pythona

Zestawy Pythona mogą przechowywać w nim elementy heterogeniczne, tj. zestaw może przechowywać mieszankę typów danych typu string, integer, boolean itp.

Python3


np.połączyć



# Python example demonstrate that a set> # can store heterogeneous elements> myset>=> {>'Geeks'>,>'for'>,>10>,>52.7>,>True>}> print>(myset)>

>

>

Wyjście:

{True, 10, 'Geeks', 52.7, 'for'}>

Złożoność czasowa: O(n)
Przestrzeń pomocnicza: O(n)

Zestawy mrożonek Pythona

Zestawy mrożone w Pythonie są niezmienne obiekty, które obsługują tylko metody i operatory, które dają wynik bez wpływu na zamrożony zbiór lub zestawy, do których są stosowane. Można to zrobić za pomocą metody mrożonej() w Pythonie.

Chociaż elementy zestawu można modyfikować w dowolnym momencie, elementy zamrożonego zestawu pozostają takie same po utworzeniu.

Jeśli nie zostaną przekazane żadne parametry, zwraca pusty zestaw zamrożony.

Pyton




# Python program to demonstrate differences> # between normal and frozen set> # Same as {'a', 'b','c'}> normal_set>=> set>([>'a'>,>'b'>,>'c'>])> print>(>'Normal Set'>)> print>(normal_set)> # A frozen set> frozen_set>=> frozenset>([>'e'>,>'f'>,>'g'>])> print>(>' Frozen Set'>)> print>(frozen_set)> # Uncommenting below line would cause error as> # we are trying to add element to a frozen set> # frozen_set.add('h')>

>

>

Wyjście:

Normal Set {'a', 'c', 'b'} Frozen Set {'e', 'g', 'f'}>

Złożoność czasowa: O(n)
Przestrzeń pomocnicza: O(n)

Wewnętrzne działanie zestawu

Opiera się to na strukturze danych znanej jako tablica mieszająca. Jeśli na tej samej pozycji indeksu znajduje się wiele wartości, wówczas wartość jest dodawana do tej pozycji indeksu, tworząc listę połączoną.

W Pythonie zestawy są implementowane przy użyciu słownika ze zmiennymi fikcyjnymi, w których kluczowe są elementy zestawu z większą optymalizacją pod kątem złożoności czasowej.

Implementacja zestawu:

Zestawy w Pythonie – działanie wewnętrzne

Zestawy z wieloma operacjami na pojedynczej tabeli HashTable:

Zestawy w Pythonie - tablica mieszająca

Metody zestawów

Dodawanie elementów do zestawów Pythona

Wkładanie do zestawu odbywa się poprzez ustaw.dodaj( ), gdzie tworzona jest odpowiednia wartość rekordu do przechowywania w tablicy mieszającej. To samo, co sprawdzanie elementu, tj. średnio O(1). Jednak w najgorszym przypadku może tak się stać NA) .

Python3


fizzbuzz Java



# A Python program to> # demonstrate adding elements> # in a set> # Creating a Set> people>=> {>'Jay'>,>'Idrish'>,>'Archi'>}> print>(>'People:'>, end>=> ' '>)> print>(people)> # This will add Daxit> # in the set> people.add(>'Daxit'>)> # Adding elements to the> # set using iterator> for> i>in> range>(>1>,>6>):> >people.add(i)> print>(>' Set after adding element:'>, end>=> ' '>)> print>(people)>

>

>

Wyjście:

People: {'Idrish', 'Archi', 'Jay'} Set after adding element: {1, 2, 3, 4, 5, 'Idrish', 'Archi', 'Jay', 'Daxit'}>

Złożoność czasowa: O(n)
Przestrzeń pomocnicza: O(n)

Operacja Union na zestawach Pythona

Dwa zbiory można połączyć za pomocą funkcji union() lub | operator. Dostęp do obu wartości Tabeli Hash jest możliwy i po nich następuje operacja scalania, wykonywana na nich w celu połączenia elementów, przy jednoczesnym usuwaniu duplikatów. Złożoność czasowa tego jest O(długość(s1) + długość(s2)) gdzie s1 i s2 to dwa zbiory, których sumę należy wykonać.

Python3




# Python Program to> # demonstrate union of> # two sets> people>=> {>'Jay'>,>'Idrish'>,>'Archil'>}> vampires>=> {>'Karan'>,>'Arjun'>}> dracula>=> {>'Deepanshu'>,>'Raju'>}> # Union using union()> # function> population>=> people.union(vampires)> print>(>'Union using union() function'>)> print>(population)> # Union using '|'> # operator> population>=> people|dracula> print>(>' Union using '|' operator'>)> print>(population)>

>

średnie drzewa
>

Wyjście:

Union using union() function {'Karan', 'Idrish', 'Jay', 'Arjun', 'Archil'} Union using '|' operator {'Deepanshu', 'Idrish', 'Jay', 'Raju', 'Archil'}>

Złożoność czasowa: O(n)
Przestrzeń pomocnicza: O(n)

Operacja przecięcia na zbiorach Pythona

Można to zrobić za pomocą operatora skrzyżowania() lub &. Wybrano wspólne elementy. Są one podobne do iteracji po listach skrótów i łączenia tych samych wartości w obu tabelach. Złożoność czasowa tego równa się O(min(len(s1), len(s2)) gdzie s1 i s2 to dwa zbiory, których sumę należy wykonać.

Python3




# Python program to> # demonstrate intersection> # of two sets> set1>=> set>()> set2>=> set>()> for> i>in> range>(>5>):> >set1.add(i)> for> i>in> range>(>3>,>9>):> >set2.add(i)> # Intersection using> # intersection() function> set3>=> set1.intersection(set2)> print>(>'Intersection using intersection() function'>)> print>(set3)> # Intersection using> # '&' operator> set3>=> set1 & set2> print>(>' Intersection using '&' operator'>)> print>(set3)>

>

>

Wyjście:

Intersection using intersection() function {3, 4} Intersection using '&' operator {3, 4}>

Złożoność czasowa: O(n)
Przestrzeń pomocnicza: O(n)

Znajdowanie różnic w zbiorach w Pythonie

Aby znaleźć różnice między zbiorami. Podobnie do znajdowania różnic na połączonej liście. Odbywa się to za pomocą operatora różnicy() lub –. Złożoność czasowa znalezienia różnicy s1 – s2 wynosi O(len(s1))

Python3

Uruchom polecenie cmd w Linuksie




# Python program to> # demonstrate difference> # of two sets> set1>=> set>()> set2>=> set>()> for> i>in> range>(>5>):> >set1.add(i)> for> i>in> range>(>3>,>9>):> >set2.add(i)> # Difference of two sets> # using difference() function> set3>=> set1.difference(set2)> print>(>' Difference of two sets using difference() function'>)> print>(set3)> # Difference of two sets> # using '-' operator> set3>=> set1>-> set2> print>(>' Difference of two sets using '-' operator'>)> print>(set3)>

>

>

Wyjście:

Difference of two sets using difference() function {0, 1, 2} Difference of two sets using '-' operator {0, 1, 2}>

Złożoność czasowa: O(n)
Przestrzeń pomocnicza: O(n)

Czyszczenie zestawów Pythona

Metoda Set Clear() opróżnia cały zestaw na miejscu.

Python3




# Python program to> # demonstrate clearing> # of set> set1>=> {>1>,>2>,>3>,>4>,>5>,>6>}> print>(>'Initial set'>)> print>(set1)> # This method will remove> # all the elements of the set> set1.clear()> print>(>' Set after using clear() function'>)> print>(set1)>

>

>

Wyjście:

Initial set {1, 2, 3, 4, 5, 6} Set after using clear() function set()>

Złożoność czasowa: O(n)
Przestrzeń pomocnicza: O(n)

Istnieją jednak dwie główne pułapki w zestawach Pythona:

  1. Zestaw nie utrzymuje elementów w określonej kolejności.
  2. Do zestawu Pythona można dodać tylko instancje typów niezmiennych.

Złożoność czasowa zbiorów

Operacja Przeciętny przypadek Najgorszy przypadek notatki
x w s O(1) NA)
Unia s|t O(dł.(s)+dł.(t))
Skrzyżowanie s&t O(min(długość(s), długość(t)) O(dł.(s) * dł.(t)) zamień min na max, jeśli t nie jest zbiorem
Skrzyżowanie wielokrotne s1&s2&..&sn (n-1)*O(l) gdzie l to max(len(s1),..,len(sn))
Różnica st O(tylko(e))

Operatory na zbiory

Zbiory i zbiory zamrożone obsługują następujące operatory:

Operatorzy Notatki
wpisz s kontrola szczelności
klucz nie jest w s kontrola niezabezpieczenia
s1 == s2 s1 jest równoważne s2
s1!= s2 s1 nie jest równoważne s2
s1 <= s2 s1 jest podzbiorem s2
s1 s1 jest właściwym podzbiorem s2
s1>= s2 s1 jest nadzbiórem s2
s1> s2 s1 jest właściwym nadzbiorem s2
s1 | s2 suma s1 i s2
s1 i s2 przecięcie s1 i s2
s1 – s2 zbiór elementów w s1, ale nie w s2
s1 ˆ s2 zbiór elementów dokładnie w jednym z s1 lub s2

Najnowsze artykuły na temat zestawu Python Set.