Python-programmeringssprog har fire samlingstyper- liste , tuple, sæt og . Men leveres også med et indbygget modul kendt som samlinger, der har specialiserede datastrukturer, der grundlæggende dækker manglerne ved de fire datatyper. I denne blog gennemgår vi hver af disse specialiserede datastrukturer i detaljer. Følgende er emnerne indhyllet i denne blog:
Hvad er samlinger i Python?
Samlinger i python er grundlæggende containerdatetyper, nemlig lister, sæt, tupler, ordbog. De har forskellige egenskaber baseret på erklæringen og brugen.
En liste er angivet i firkantede parenteser, den kan ændres, gemmer duplikatværdier, og der er adgang til elementer ved hjælp af indekser.
En tuple er ordnet og uforanderlig i naturen, selvom duplikatindgange kan være der inde i en tuple.
Et sæt er ikke ordnet og deklareret i firkantede parenteser. Det er ikke indekseret og har heller ikke duplikater.
En ordbog har nøgleværdipar og kan ændres i naturen. Vi bruger firkantede parenteser til at erklære en ordbog.
Dette er pythons indbyggede container-datatyper til generelle formål. Men som vi alle ved, har python altid lidt ekstra at byde på. Den leveres med et python-modul med navnet samlinger, som har specialiserede datastrukturer.
factorial ved hjælp af rekursion i c
Specialiserede datastrukturer til indsamling
Samlinger modul i python implementerer specialiserede datastrukturer, der giver alternativ til pythons indbyggede container-datatyper. Følgende er de specialiserede datastrukturer i samlingsmodulet.
- namedtuple ()
- og
- Chainmap
- Tæller
- OrderedDict
- defaultdict
- UserDict
- Brugerliste
- UserString
namedtuple ()
Det returnerer en tuple med en navngivet post, hvilket betyder, at der vil være et navn tildelt hver værdi i tuplen. Det overvinder problemet med at få adgang til elementerne ved hjælp af indeksværdierne. Med namedtuple () bliver det lettere at få adgang til disse værdier, da du ikke behøver at huske indeksværdierne for at få specifikke elementer.
Hvordan det virker?
Først og fremmest skal du importere samlingmodul, det kræver ikke installation.
fra samlinger importeret navngivet tuple
Se på følgende kode for at forstå, hvordan du kan bruge namedtuple.
a = namedtuple ('courses', 'name, tech') s = a ('data science', 'python') print (s) # output vil være kurser (name = 'python', tech = 'python')
Hvordan oprettes en navngivet tuple ved hjælp af en liste?
s._make (['data science', 'python']) # output vil være den samme som før.
og
deque udtalt som 'deck' er en optimeret liste til let at udføre indsættelse og sletning.
Hvordan det virker?
# opretter en deque fra samlinger import deque a = ['d', 'u', 'r', 'e', 'k'] a1 = deque (a) print (a1) # output vil være deque ([' d ',' u ',' r ',' e ',' k '])
Lad os nu se på, hvordan vi indsætter og fjerner genstande fra deque.
tilføjelse af to tal i java
a1.append ('a') print (a1) # output vil være deque (['d', 'u', 'r', 'e', 'k', 'a']) a1.appendleft (' e ') print (a1) # output vil være deque ([' e ',' d ',' u ',' r ',' e ',' k ',' a '])
Som det skal være indlysende, er indsættelse af en komponent forbedret ved hjælp af deque, og du kan også fjerne komponenter.
a1.pop () print (a1) # output vil være deque (['e', 'd', 'u', 'r', 'e', 'k']) a1.popleft () print (a1 ) # output vil være deque (['d', 'u', 'r', 'e', 'k'])
I lighed med de indbyggede datatyper er der flere andre operationer, som vi kan udføre på en deque. Som at tælle elementer eller rydde deque osv.
ChainMap
Det er en ordbog som klasse, der er i stand til at få en enkelt visning af flere tilknytninger. Det returnerer dybest set en liste over flere andre ordbøger. Antag at du har to ordbøger med flere nøgleværdipar, i dette tilfælde laver ChainMap en enkelt liste med begge ordbøgerne.
Hvordan det virker?
fra samlinger importerer ChainMap a = {1: 'edureka', 2: 'python'} b = {3: 'data science', 4: 'Machine learning'} c = ChainMap (a, b) print (c) #the output vil være ChainMap [{1: 'edureka', 2: 'python'}, {3: 'data science', 4: 'Machine learning'}]
For at få adgang til eller indsætte elementer bruger vi tasterne som indeks. Men for at tilføje en ny ordbog i ChainMap bruger vi følgende tilgang.
a1 = {5: 'AI', 6: 'neurale netværk'} c1 = c.new_child (a1) print (c1) # output vil være ChainMap [{1: 'edureka', 2: 'python'}, { 3: 'data science', 4: 'Machine learning'}, {5: 'AI', 6: 'neurale netværk'}]
Tæller
Det er en ordboksunderklasse, der bruges til at tælle hashable-objekter.
Hvordan det virker?
fra samlinger import Counter a = [1,1,1,1,2,3,3,4,3,3,4] c = Counter (a) print (c) # output vil være Counter = ({1: 4, 2: 1, 3: 4, 4: 2})
Ud over de handlinger, du kan udføre på en ordbog, har tælleren 3 flere handlinger, som vi kan udføre.
- elementfunktion - Den returnerer en liste, der indeholder alle elementerne i tælleren.
- Most_common () - Det returnerer en sorteret liste med antallet af hvert element i tælleren.
- Subtraher () - Det tager et iterabelt objekt som et argument og trækker antallet af elementer i tælleren.
OrderedDict
Det er en ordboksunderklasse, der husker rækkefølgen, hvor posterne blev tilføjet. Grundlæggende, selvom du ændrer værdien på nøglen, ændres positionen ikke på grund af rækkefølgen, som den blev indsat i ordbogen.
Hvordan det virker?
fra samlinger importeret OrderedDict od = OrderedDict () od [1] = 'e' od [2] = 'd' od [3] = 'u' od [4] = 'r' od [5] = 'e' od [6] = 'k' fra [7] = 'a' udskriv (fra) # udgangen bestilles ordning [(1, 'e'), (2, 'd'), (3, 'u'), (4, 'r'), (5, 'e'), (6, 'k'), (7, 'a')]
Det betyder ikke noget, hvilken værdi der indsættes i ordbogen, OrderedDict husker rækkefølgen, som den blev indsat i, og får output i overensstemmelse hermed. Selv hvis vi ændrer værdien på nøglen. Lad os sige, hvis vi ændrer nøgleværdien 4 til 8, ændres rækkefølgen ikke i output.
defaultdict
Det er en ordbog-underklasse, der kalder en fabriksfunktion for at levere manglende værdier. Generelt kaster det ingen fejl, når en manglende nøgleværdi kaldes i en ordbog.
Hvordan det virker?
fra samlinger import defaultdict d = defaultdict (int) # vi skal også specificere en type. d [1] = 'edureka' d [2] = 'python' udskrivning (d [3]) # det giver output som 0 i stedet for keyerror.
UserDict
Denne klasse fungerer som en indpakning omkring ordbogobjekter. Behovet for denne klasse kom fra nødvendigheden af at underklasse direkte fra dict. Det bliver lettere at arbejde med denne klasse, da den underliggende ordbog bliver en attribut.
klassesamlinger.UserDict ([initialdata])
Denne klasse simulerer en ordbog. Indholdet af forekomsten opbevares i en almindelig ordbog, som kan tilgås med attributten 'data' fra klassen UserDict. Henvisningen til de oprindelige data opbevares ikke, så den kan bruges til andre formål.
Brugerliste
Denne klasse fungerer som en indpakning omkring listeobjekterne. Det er en nyttig baseklasse til andre lister som klasser, der kan arve fra dem og tilsidesætte de eksisterende metoder eller endda tilføje færre nye også.
casting dobbelt til int java
Behovet for denne klasse kom fra nødvendigheden af at underklasse direkte fra listen. Det bliver lettere at arbejde med denne klasse, da den underliggende liste bliver en attribut.
klassesamlinger. Brugerliste ([liste])
Det er klassen, der simulerer en liste. Indholdet af forekomsten opbevares på en sædvanlig liste. Underklasserne på listen er afhængige af at tilbyde en konstruktør, som kan kaldes med enten ingen eller en påstand.
I denne blog har vi lært om de specialiserede datastrukturer, der følger med samlingsmodul i python. Optimering fører til bedre ydeevne og forbedrede resultater. Det samme gælder også for vores egen karriere og færdigheder. Hvis du vil starte din læring og optimere den måde, du opfatter programmering på, kan du tilmelde dig edureka's og frigør de uendelige muligheder med python.
Har du spørgsmål? nævne dem i kommentarer, og vi vender tilbage til dig hurtigst muligt.