Python-ohjelmoinnin joukko on järjestämätön kokoelmatietotyyppi, joka on iteroitavissa, muuttuva ja jossa ei ole päällekkäisiä elementtejä.
Joukkoa edustaa { } (arvot on suljettu aaltosulkeissa)
Sarjan käytön suurin etu verrattuna a lista , on se, että sillä on erittäin optimoitu menetelmä sen tarkistamiseksi, sisältyykö joukkoon tietty elementti. Tämä perustuu tietorakenteeseen, joka tunnetaan nimellä hash-taulukko. Koska joukot ovat järjestämättömiä, emme voi käyttää nimikkeitä indeksien avulla kuten luetteloissa.
Esimerkki Python-sarjoista
Python 3
var> => {> 'Geeks'> ,> 'for'> ,> 'Geeks'> }> type> (var)> |
>
>
Lähtö:
set>
Aika monimutkaisuus: O(1)
Aputila: O(1)
Kirjoita Casting Python Set -menetelmällä
Tyyppivalussa käytetään Python set() -menetelmää.
Python 3
# typecasting list to set> myset> => set> ([> 'a'> ,> 'b'> ,> 'c'> ])> print> (myset)> # Adding element to the set> myset.add(> 'd'> )> print> (myset)> |
java merkkijonoja
>
>
Lähtö:
Python-joukko on järjestämätön tietotyyppi, mikä tarkoittaa, että emme voi tietää, missä järjestyksessä joukon elementit on tallennettu.
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}>
Aika monimutkaisuus: O(n)
Aputila: O(n)
Tarkista ainutlaatuinen ja muuttumaton Python-sarjan avulla
Python-joukoilla ei voi olla päällekkäistä arvoa, ja kun se on luotu, emme voi muuttaa sen arvoa.
Python 3
# 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)> |
>
>
Lähtö:
Ensimmäinen koodi selittää, että joukolla ei voi olla päällekkäistä arvoa. Jokainen siinä oleva esine on ainutlaatuinen arvo.
Toinen koodi tuottaa virheen, koska emme voi määrittää tai muuttaa arvoa, kun joukko on luotu. Voimme lisätä tai poistaa vain kohteita sarjassa.
{'Geeks', 'for'} TypeError: 'set' object does not support item assignment>
Heterogeeninen elementti Python-sarjalla
Python-joukot voivat tallentaa siihen heterogeenisiä elementtejä, eli joukko voi tallentaa seoksen merkkijono-, kokonaisluku-, boolean- jne. tietotyyppejä.
Python 3
# Python example demonstrate that a set> # can store heterogeneous elements> myset> => {> 'Geeks'> ,> 'for'> ,> 10> ,> 52.7> ,> True> }> print> (myset)> |
>
>
Lähtö:
{True, 10, 'Geeks', 52.7, 'for'}>
Aika monimutkaisuus: O(n)
Aputila: O(n)
yksinkertainen java ohjelma
Pythonin jäädytetyt joukot
Jäädytetyt setit Pythonissa ovat muuttumattomia objekteja, jotka tukevat vain menetelmiä ja operaattoreita, jotka tuottavat tuloksen vaikuttamatta jäädytettyyn joukkoon tai sarjoihin, joihin niitä sovelletaan. Se voidaan tehdä Pythonissa frozenset()-menetelmällä.
Vaikka joukon elementtejä voidaan muokata milloin tahansa, jäädytetyn joukon elementit pysyvät samoina luomisen jälkeen.
Jos parametreja ei välitetä, se palauttaa tyhjän jäädytetyn joukon.
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')> |
>
>
Lähtö:
Normal Set {'a', 'c', 'b'} Frozen Set {'e', 'g', 'f'}>
Aika monimutkaisuus: O(n)
Aputila: O(n)
Setin sisäinen toiminta
Tämä perustuu tietorakenteeseen, joka tunnetaan nimellä hash-taulukko. Jos samassa indeksikohdassa on useita arvoja, arvo liitetään kyseiseen indeksipaikkaan linkitettyjen listan muodostamiseksi.
Python-joukot on toteutettu käyttämällä sanakirjaa, jossa on valemuuttujia, joissa avainolennot jäsenet asettavat suuremmilla optimoinnilla ajan monimutkaisuuteen.
Aseta toteutus:

Sarjat, joissa on useita toimintoja yhdessä hash-taulukossa:

Menetelmät sarjoille
Elementtien lisääminen Python-sarjoihin
Asettaminen sarjaan tapahtuu kautta set.add( ) -funktio, jossa luodaan sopiva tietuearvo tallennettavaksi hash-taulukkoon. Sama kuin kohteen tarkistaminen, eli O(1) keskimäärin. Siitä voi kuitenkin pahimmassa tapauksessa tulla Päällä) .
Python 3
# 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)> |
vastaava merkkijono javassa
>
>
Lähtö:
People: {'Idrish', 'Archi', 'Jay'} Set after adding element: {1, 2, 3, 4, 5, 'Idrish', 'Archi', 'Jay', 'Daxit'}>
Aika monimutkaisuus: O(n)
Aputila: O(n)
Unionin toiminta Python-sarjoissa
Kaksi joukkoa voidaan yhdistää käyttämällä union()-funktiota tai | operaattori. Molempiin hajautustaulukon arvoihin päästään ja ne kuljetetaan yhdistämistoiminnon avulla elementtien yhdistämiseksi, samalla kun kaksoiskappaleet poistetaan. Aika monimutkaisuus tässä on O(lin(s1) + lins(s2)) missä s1 ja s2 ovat kaksi joukkoa, joiden yhdistäminen on tehtävä.
Python 3
# 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)> |
>
>
Lähtö:
Union using union() function {'Karan', 'Idrish', 'Jay', 'Arjun', 'Archil'} Union using '|' operator {'Deepanshu', 'Idrish', 'Jay', 'Raju', 'Archil'}>
Aika monimutkaisuus: O(n)
Aputila: O(n)
Risteystoiminto Python-sarjoissa
Tämä voidaan tehdä intersection()- tai &-operaattorilla. Yleiset elementit on valittu. Ne ovat samanlaisia kuin iteraatio hash-luetteloiden yli ja yhdistävät samat arvot molemmissa taulukoissa. Aika Tämän monimutkaisuus on O(min(len(s1), len(s2)), missä s1 ja s2 ovat kaksi joukkoa, joiden yhdistäminen on tehtävä.
Python 3
# 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)> |
>
>
Lähtö:
Intersection using intersection() function {3, 4} Intersection using '&' operator {3, 4}>
Aika monimutkaisuus: O(n)
Aputila: O(n)
Joukkoerojen löytäminen Pythonissa
Etsiä eroja sarjojen välillä. Sama kuin erojen löytäminen linkitetystä luettelosta. Tämä tehdään different()- tai –-operaattorilla. Eron s1 – s2 löytämisen aikamonimutkaisuus on O(len(s1))
Python 3
# 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)> |
>
>
Lähtö:
Difference of two sets using difference() function {0, 1, 2} Difference of two sets using '-' operator {0, 1, 2}>
Aika monimutkaisuus: O(n)
Aputila: O(n)
Python-sarjojen tyhjentäminen
Set Clear() -metodi tyhjentää koko joukon paikoilleen.
Python 3
# 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)> |
>
java concat merkkijonot
>
Lähtö:
Initial set {1, 2, 3, 4, 5, 6} Set after using clear() function set()>
Aika monimutkaisuus: O(n)
Aputila: O(n)
Python-sarjoissa on kuitenkin kaksi suurta sudenkuoppaa:
- Sarja ei säilytä elementtejä missään tietyssä järjestyksessä.
- Python-joukkoon voidaan lisätä vain muuttumattomien tyyppien esiintymiä.
Sarjojen aika monimutkaisuus
Operaatio | Keskimääräinen tapaus | Pahimmassa tapauksessa | muistiinpanoja |
---|---|---|---|
x s | O(1) | Päällä) | |
Unionin s|t | O(lin(t)+len(t)) | ||
Risteys s&t | O(min(lin(t), len(t)) | O(lin(t) * len(t)) | korvaa min arvolla max, jos t ei ole joukko |
Useita risteyksiä s1&s2&..&sn | (n-1)*O(l) jossa l on max(len(s1),..,len(sn)) | ||
Ero s-t | O (vain(t)) |
Operaattorit sarjoille
Sarjat ja jäädytetyt sarjat tukevat seuraavia operaattoreita:
Operaattorit | Huomautuksia |
---|---|
näppäile s | suojauksen tarkistus |
avain ei sisällä s | ei-sulkutarkastus |
s1 == s2 | s1 vastaa s2:ta |
s1 ! = s2 | s1 ei vastaa s2:ta |
s1 <= s2 | s1 on s2:n osajoukko |
s1 | s1 on s2:n oikea osajoukko |
s1>= s2 | s1 on s2:n superjoukko |
s1> s2 | s1 on s2:n oikea superjoukko |
s1 | s2 | s1:n ja s2:n liitto |
s1 & s2 | s1:n ja s2:n leikkauspiste |
s1 - s2 | elementtien joukko s1:ssä mutta ei s2:ssa |
s1 ˆ s2 | elementtijoukko täsmälleen s1:stä tai s2:sta |
Viimeisimmät artikkelit Python Setistä.