„Python“ programavimo rinkinys yra netvarkingas rinkinio duomenų tipas, kurį galima kartoti, keisti ir neturintis pasikartojančių elementų.
Aibė žymima { } (reikšmės įterptos į riestinius skliaustus)
Pagrindinis rinkinio naudojimo pranašumas, priešingai nei a sąrašą , yra tai, kad jis turi labai optimizuotą metodą, leidžiantį patikrinti, ar rinkinyje yra konkretus elementas. Tai pagrįsta duomenų struktūra, žinoma kaip maišos lentelė. Kadangi rinkiniai yra netvarkingi, negalime pasiekti elementų naudodami indeksus, kaip tai darome sąrašuose.
Python rinkinių pavyzdys
Python3
eilutę ir eilutę
var> => {> 'Geeks'> ,> 'for'> ,> 'Geeks'> }> type> (var)> |
>
>
Išvestis:
set>
Laiko sudėtingumas: O(1)
Pagalbinė erdvė: O(1)
Įveskite Casting naudojant Python Set metodą
Python set() metodas naudojamas tipo liejimui.
Python3
# typecasting list to set> myset> => set> ([> 'a'> ,> 'b'> ,> 'c'> ])> print> (myset)> # Adding element to the set> myset.add(> 'd'> )> print> (myset)> |
>
>
Išvestis:
Python rinkinys yra netvarkingas duomenų tipas, o tai reiškia, kad negalime žinoti, kokia tvarka yra saugomi rinkinio elementai.
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}>
Laiko sudėtingumas: O(n)
Pagalbinė erdvė: O(n)
Patikrinkite unikalų ir nekintamą naudodami Python Set
Python rinkiniai negali turėti pasikartojančios reikšmės, o sukūrę negalime pakeisti jos vertės.
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)> |
>
>
Išvestis:
Pirmasis kodas paaiškina, kad rinkinys negali turėti pasikartojančios reikšmės. Kiekvienas jame esantis daiktas yra unikali vertybė.
Antrasis kodas sugeneruoja klaidą, nes negalime priskirti ar pakeisti reikšmės sukūrę rinkinį. Rinkinyje galime pridėti arba ištrinti tik elementus.
{'Geeks', 'for'} TypeError: 'set' object does not support item assignment>
Heterogeninis elementas su Python rinkiniu
Python rinkiniai jame gali saugoti nevienalyčius elementus, ty rinkinys gali saugoti eilučių, sveikųjų skaičių, loginio ir tt duomenų tipų mišinį.
Python3
# Python example demonstrate that a set> # can store heterogeneous elements> myset> => {> 'Geeks'> ,> 'for'> ,> 10> ,> 52.7> ,> True> }> print> (myset)> |
>
>
Išvestis:
{True, 10, 'Geeks', 52.7, 'for'}>
Laiko sudėtingumas: O(n)
Pagalbinė erdvė: O(n)
Python šaldyti rinkiniai
Užšaldyti rinkiniai Python yra nekintantys objektai, kurie palaiko tik metodus ir operatorius, kurie sukuria rezultatą nepaveikdami fiksuoto rinkinio ar rinkinių, kuriems jie taikomi. Tai galima padaryti naudojant Python metodą frozenset().
Nors rinkinio elementus galima bet kada keisti, fiksuoto rinkinio elementai po sukūrimo išlieka tokie patys.
Jei nepateikiami jokie parametrai, jis grąžina tuščią fiksuotą rinkinį.
Python
# 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')> |
>
np.sujungti
>
Išvestis:
Normal Set {'a', 'c', 'b'} Frozen Set {'e', 'g', 'f'}>
Laiko sudėtingumas: O(n)
Pagalbinė erdvė: O(n)
Vidinis rinkinio darbas
Tai pagrįsta duomenų struktūra, žinoma kaip maišos lentelė. Jei toje pačioje indekso pozicijoje yra kelios reikšmės, tada vertė pridedama prie tos indekso pozicijos, kad būtų sudarytas susietasis sąrašas.
„Python“ rinkiniai įgyvendinami naudojant žodyną su netikrais kintamaisiais, kur pagrindiniai elementai nustatomi labiau optimizuodami laiko sudėtingumą.
Nustatyti įgyvendinimą:

Rinkiniai su daugybe operacijų vienoje maišos lentelėje:

Metodai rinkiniams
Elementų įtraukimas į Python rinkinius
Įterpimas į rinkinį atliekamas per set.add( ) funkcija, kai sukuriama atitinkama įrašo reikšmė, kurią galima saugoti maišos lentelėje. Tas pats, kas tikrinant prekę, t.y. O(1) vidutiniškai. Tačiau blogiausiu atveju tai gali tapti O(n) .
Python3
# 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)> |
>
>
Išvestis:
People: {'Idrish', 'Archi', 'Jay'} Set after adding element: {1, 2, 3, 4, 5, 'Idrish', 'Archi', 'Jay', 'Daxit'}>
Laiko sudėtingumas: O(n)
Pagalbinė erdvė: O(n)
Sąjungos operacija Python rinkiniuose
Du rinkinius galima sujungti naudojant union() funkciją arba | operatorius. Abi maišos lentelės reikšmės pasiekiamos ir perkeliamos atliekant sujungimo operaciją, kad būtų sujungti elementai, tuo pačiu metu pašalinamos dublikatai. Laiko sudėtingumas yra toks O(len(s1) + len(s2)) kur s1 ir s2 yra dvi aibės, kurias reikia sujungti.
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)> |
>
>
Išvestis:
Union using union() function {'Karan', 'Idrish', 'Jay', 'Arjun', 'Archil'} Union using '|' operator {'Deepanshu', 'Idrish', 'Jay', 'Raju', 'Archil'}>
Laiko sudėtingumas: O(n)
Pagalbinė erdvė: O(n)
Sankryžos operacija Python rinkiniuose
Tai galima padaryti naudojant intersection() arba & operatorių. Parenkami bendrieji elementai. Jie panašūs į iteraciją maišos sąrašuose ir tų pačių verčių derinimą abiejose lentelėse. Laiko sudėtingumas yra O(min(len(s1), len(s2)), kur s1 ir s2 yra dvi aibės, kurias reikia sujungti.
priešinga paieška
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)> |
>
>
Išvestis:
Intersection using intersection() function {3, 4} Intersection using '&' operator {3, 4}>
Laiko sudėtingumas: O(n)
Pagalbinė erdvė: O(n)
„Python“ rinkinių skirtumų radimas
Norėdami rasti skirtumus tarp rinkinių. Panašiai kaip rasti skirtumų susietame sąraše. Tai atliekama naudojant skirtumą () arba – operatorių. Skirtumo s1 – s2 nustatymo laiko sudėtingumas yra O(len(s1))
Python3
# 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)> |
>
>
Išvestis:
Difference of two sets using difference() function {0, 1, 2} Difference of two sets using '-' operator {0, 1, 2}>
Laiko sudėtingumas: O(n)
Pagalbinė erdvė: O(n)
Python rinkinių išvalymas
Set Clear() metodas ištuština visą rinkinį vietoje.
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)> |
>
>
Išvestis:
Initial set {1, 2, 3, 4, 5, 6} Set after using clear() function set()>
Laiko sudėtingumas: O(n)
Pagalbinė erdvė: O(n)
Tačiau Python rinkiniuose yra dvi pagrindinės spąstos:
- Rinkinyje nėra elementų tam tikra tvarka.
- Į Python rinkinį galima įtraukti tik nekintamų tipų egzempliorius.
Rinkinių laiko sudėtingumas
Operacija | Vidutinis atvejis | Blogiausiu atveju | Pastabos |
---|---|---|---|
x s | O(1) | O(n) | |
Sąjungos s|t | O(len(s)+len(t)) | ||
Sankryža s&t | O(min(len(s), len(t)) | O(len(s) * len(t)) | pakeiskite min į max, jei t nėra aibė |
Kelios sankryžos s1&s2&..&sn | (n-1)*O(l) kur l yra maks.(len(s1),..,len(sn)) | ||
Skirtumas s-t | O (tik (-ai)) |
Rinkinių operatoriai
Rinkiniai ir užšaldyti rinkiniai palaiko šiuos operatorius:
Operatoriai | Pastabos |
---|---|
įvesti s | sulaikymo patikrinimas |
raktas ne s | nesulaikymo patikrinimas |
s1 == s2 | s1 yra lygiavertis s2 |
s1 != s2 | s1 nėra lygiavertis s2 |
s1 <= s2 | s1 yra s2 poaibis |
s1 | s1 yra tinkamas s2 poaibis |
s1>= s2 | s1 yra s2 superaibė |
s1> s2 | s1 yra tinkamas s2 superrinkinys |
s1 | s2 | s1 ir s2 sąjunga |
s1 ir s2 | s1 ir s2 sankirta |
s1 – s2 | elementų rinkinys s1, bet ne s2 |
s1 ˆ s2 | elementų rinkinys tiksliai viename iš s1 arba s2 |
Naujausi straipsniai apie Python Set.