Et sæt i Python-programmering er en uordnet indsamlingsdatatype, der kan itereres, ændres og ikke har duplikerede elementer.
Sæt er repræsenteret af { } (værdier omgivet af krøllede parenteser)
Den største fordel ved at bruge et sæt i modsætning til en liste , er, at den har en meget optimeret metode til at kontrollere, om et specifikt element er indeholdt i sættet. Dette er baseret på en datastruktur kendt som en hash-tabel. Da sæt er uordnede, kan vi ikke få adgang til elementer ved hjælp af indekser, som vi gør i lister.
Eksempel på Python-sæt
Python3
var>=> {>'Geeks'>,>'for'>,>'Geeks'>}> type>(var)> |
>
>
Produktion:
set>
Tidskompleksitet: O(1)
Hjælpeplads: O(1)
Skriv Casting med Python Set-metoden
Python set() metoden bruges til type casting.
Python3
# typecasting list to set> myset>=> set>([>'a'>,>'b'>,>'c'>])> print>(myset)> # Adding element to the set> myset.add(>'d'>)> print>(myset)> |
>
>
Produktion:
Python-sæt er en uordnet datatype, hvilket betyder, at vi ikke kan vide, i hvilken rækkefølge sættets elementer er gemt.
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}> Tidskompleksitet: O(n)
Hjælpeplads: O(n)
Tjek unik og uforanderlig med Python Set
Python-sæt kan ikke have en dubletværdi, og når først det er oprettet, kan vi ikke ændre dets værdi.
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)> |
>
>
Produktion:
Den første kode forklarer, at sættet ikke kan have en dubletværdi. Hver genstand i den har en unik værdi.
Den anden kode genererer en fejl, fordi vi ikke kan tildele eller ændre en værdi, når sættet er oprettet. Vi kan kun tilføje eller slette elementer i sættet.
{'Geeks', 'for'} TypeError: 'set' object does not support item assignment> Heterogent element med Python-sæt
Python-sæt kan gemme heterogene elementer i det, det vil sige, at et sæt kan gemme en blanding af streng, heltal, boolean, osv. datatyper.
Python3
# Python example demonstrate that a set> # can store heterogeneous elements> myset>=> {>'Geeks'>,>'for'>,>10>,>52.7>,>True>}> print>(myset)> |
>
>
Produktion:
{True, 10, 'Geeks', 52.7, 'for'}> Tidskompleksitet: O(n)
Hjælpeplads: O(n)
Python frosne sæt
Frosne sæt i Python er uforanderlige objekter, der kun understøtter metoder og operatører, der producerer et resultat uden at påvirke det eller de frosne sæt, som de anvendes på. Det kan gøres med frozenset() metoden i Python.
Mens elementer i et sæt kan ændres til enhver tid, forbliver elementer i det frosne sæt de samme efter oprettelsen.
Hvis ingen parametre sendes, returnerer den et tomt fastfrosset sæt.
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')> |
>
>
Produktion:
Normal Set {'a', 'c', 'b'} Frozen Set {'e', 'g', 'f'}> Tidskompleksitet: O(n)
Hjælpeplads: O(n)
Internt arbejde af Set
Dette er baseret på en datastruktur kendt som en hash-tabel. Hvis flere værdier er til stede på den samme indeksposition, føjes værdien til denne indeksposition for at danne en sammenkædet liste.
I er Python-sæt implementeret ved hjælp af en ordbog med dummy-variabler, hvor nøglevæsener medlemmerne indstiller med større optimeringer til tidskompleksiteten.
Sæt implementering:
Sæt med talrige operationer på en enkelt HashTable:
Metoder til sæt
Tilføjelse af elementer til Python-sæt
Indsættelse i sættet sker gennem set.add( ) funktion, hvor der oprettes en passende postværdi til at gemme i hash-tabellen. Det samme som at tjekke for en vare, dvs. O(1) i gennemsnit. Men i værste fald kan det blive På) .
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)> |
>
>
Produktion:
People: {'Idrish', 'Archi', 'Jay'} Set after adding element: {1, 2, 3, 4, 5, 'Idrish', 'Archi', 'Jay', 'Daxit'}> Tidskompleksitet: O(n)
Hjælpeplads: O(n)
Unionsdrift på Python-sæt
To sæt kan flettes ved hjælp af union()-funktionen eller | operatør. Begge Hash-tabelværdier tilgås og gennemløbes med fletteoperation udføre på dem for at kombinere elementerne, samtidig fjernes dubletter. Tidskompleksiteten af dette er O(len(s1) + len(s2)) hvor s1 og s2 er to sæt, hvis forening skal udføres.
Python3
hrithik roshan alder
# 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)> |
>
>
Produktion:
Union using union() function {'Karan', 'Idrish', 'Jay', 'Arjun', 'Archil'} Union using '|' operator {'Deepanshu', 'Idrish', 'Jay', 'Raju', 'Archil'}> Tidskompleksitet: O(n)
Hjælpeplads: O(n)
Skæringsoperation på Python-sæt
Dette kan gøres gennem intersection() eller & operator. Fælles elementer er valgt. De ligner iteration over Hash-listerne og kombinerer de samme værdier på begge tabellen. Tidskompleksiteten af dette er O(min(len(s1), len(s2)), hvor s1 og s2 er to sæt, hvis forening skal udføres.
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)> |
>
>
Produktion:
Intersection using intersection() function {3, 4} Intersection using '&' operator {3, 4}> Tidskompleksitet: O(n)
Hjælpeplads: O(n)
Find forskelle mellem sæt i Python
For at finde forskelle mellem sæt. Svarende til at finde forskelle i den linkede liste. Dette gøres gennem difference() eller – operator. Tidskompleksiteten ved at finde forskel s1 – s2 er 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)> |
>
>
Produktion:
Difference of two sets using difference() function {0, 1, 2} Difference of two sets using '-' operator {0, 1, 2}> Tidskompleksitet: O(n)
Hjælpeplads: O(n)
Rydning af Python-sæt
Set Clear() metoden tømmer hele sættet på plads.
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)> |
>
>
Produktion:
Initial set {1, 2, 3, 4, 5, 6} Set after using clear() function set()> Tidskompleksitet: O(n)
Hjælpeplads: O(n)
Der er dog to store faldgruber i Python-sæt:
- Sættet vedligeholder ikke elementer i nogen bestemt rækkefølge.
- Kun forekomster af uforanderlige typer kan tilføjes til et Python-sæt.
Tidskompleksitet af sæt
| Operation | Gennemsnitligt tilfælde | Worst Case | noter |
|---|---|---|---|
| x i s | O(1) | På) | |
| Union s|t | O(len(s)+len(t)) | ||
| Kryds s&t | O(min(len(s), len(t)) | O(len(s) * len(t)) | udskift min med max, hvis t ikke er et sæt |
| Multiplet kryds s1&s2&..&sn | (n-1)*O(l) hvor l er max(len(s1),..,len(sn)) | ||
| Forskel s-t | O(kun(e)) |
Operatører til sæt
Sæt og frosne sæt understøtter følgende operatører:
| Operatører | Noter |
|---|---|
| indtast s | indeslutningskontrol |
| nøgle ikke i s | ikke-indeholdelseskontrol |
| s1 == s2 | s1 svarer til s2 |
| s1 != s2 | s1 svarer ikke til s2 |
| s1 <= s2 | s1 er en delmængde af s2 |
| s1 | s1 er korrekt delmængde af s2 |
| s1>= s2 | s1 er supersæt af s2 |
| s1> s2 | s1 er det rigtige supersæt af s2 |
| s1 | s2 | foreningen af s1 og s2 |
| s1 og s2 | skæringspunktet mellem s1 og s2 |
| s1 – s2 | sættet af elementer i s1 men ikke s2 |
| s1 ˆ s2 | sættet af elementer i netop et af s1 eller s2 |
Seneste artikler om Python Set.