Zbirke u Pythonu: Sve što trebate znati o Python zbirkama



Ovaj će blog pokrivati ​​ugrađene tipove podataka zbirke u pythonu, zajedno s modulom zbirki sa svim specijaliziranim strukturama podataka kolekcije.

Programski jezik Python ima četiri vrste podataka o zbirci - popis , tuple, setovi i . Ali također dolazi s ugrađenim modulom poznatim kao zbirke koji ima specijalizirane strukture podataka koje u osnovi pokrivaju nedostatke četiri vrste podataka. Na ovom ćemo blogu detaljno proći kroz svaku od tih specijaliziranih struktura podataka. Slijede teme zaogrnute ovim blogom:

Što su zbirke u Pythonu?

Zbirke u pythonu u osnovi su tipovi podataka spremnika, naime popisi, skupovi, korice, rječnik. Imaju različite karakteristike na temelju deklaracije i upotrebe.





  • Popis se deklarira u uglastim zagradama, promjenjiv je, pohranjuje dvostruke vrijednosti i elementima se može pristupiti pomoću indeksa.

  • Korica je poredane i nepromjenjive prirode, iako se duplicirani unosi mogu nalaziti unutar korijena.



  • Skup je neuređen i deklariran je u uglastim zagradama. Nije indeksiran i nema duplikate unosa.

  • Rječnik ima parove ključnih vrijednosti i po svojoj je prirodi promjenjiv. Upotrebljavamo uglate zagrade za deklariranje rječnika.

To su pythonove opće namjene ugrađene vrste podataka spremnika. No, kao što svi znamo, python uvijek ima malo dodatnog za ponuditi. Dolazi s python modulom pod nazivom collection koji ima specijalizirane strukture podataka.



Specijalizirane strukture podataka za prikupljanje

Zbirke modul u pythonu implementira specijalizirane strukture podataka koje pružaju alternativu ugrađenim pythonovim vrstama spremnika podataka. Slijede specijalizirane strukture podataka u modulu zbirki.

  1. namedtuple ()
  2. i
  3. Chainmap
  4. Brojač
  5. NaređeniDict
  6. zadana presuda
  7. UserDict
  8. Popis korisnika
  9. UserString

namedtuple ()

Vraća tuple s imenovanim unosom, što znači da će svakoj vrijednosti u tupletu biti dodijeljeno ime. Prevladava problem pristupa elementima pomoću vrijednosti indeksa. S namedtuple () postaje lakše pristupiti tim vrijednostima, jer ne morate pamtiti vrijednosti indeksa da biste dobili određene elemente.

Kako radi?

Prije svega, morate uvesti modul zbirki, on ne zahtijeva instalaciju.

iz zbirki uvozi namedtuple

Pogledajte sljedeći kod da biste razumjeli kako možete koristiti namedtuple.

a = namedtuple ('courses', 'name, tech') s = a ('data science', 'python') print (s) # izlaz će biti tečajevi (name = 'python', tech = 'python')

Kako stvoriti imenovani par pomoću popisa?

s._make (['data science', 'python']) # izlaz će biti isti kao i prije.

i

deque koji se izgovara kao 'deck' optimiziran je popis za jednostavno izvođenje umetanja i brisanja.

Kako radi?

#creating deque iz kolekcija import deque a = ['d', 'u', 'r', 'e', ​​'k'] a1 = deque (a) print (a1) # izlaz će biti deque ([' d ',' u ',' r ',' e ',' k '])

Pogledajmo sada kako ćemo umetnuti i ukloniti predmete iz dequea.

a1.append ('a') print (a1) # izlaz će biti deque (['d', 'u', 'r', 'e', ​​'k', 'a']) a1.appendleft (' e ') print (a1) # izlaz će biti deque ([' e ',' d ',' u ',' r ',' e ',' k ',' a '])

Kao što bi trebalo biti očito, umetanje komponente poboljšava se upotrebom deque-a, a također možete ukloniti i komponente.

a1.pop () print (a1) # izlaz će biti deque (['e', 'd', 'u', 'r', 'e', ​​'k']) a1.popleft () print (a1 ) # izlaz će biti deque (['d', 'u', 'r', 'e', ​​'k'])

Slično ugrađenim vrstama podataka, postoji nekoliko drugih operacija koje možemo izvršiti na dequeu. Poput brojanja elemenata ili čišćenja dequea itd.

ChainMap

Riječ je poput klase koja može stvoriti jedan prikaz više mapiranja. U osnovi vraća popis nekoliko drugih rječnika. Pretpostavimo da imate dva rječnika s nekoliko parova vrijednosti ključeva, u ovom će slučaju ChainMap napraviti jedan popis s oba rječnika u sebi.

Kako radi?

iz zbirki uvozi ChainMap a = {1: 'edureka', 2: 'python'} b = {3: 'data science', 4: 'Strojno učenje'} c = ChainMap (a, b) print (c) #the izlaz će biti ChainMap [{1: 'edureka', 2: 'python'}, {3: 'data science', 4: 'Strojno učenje'}]

Za pristup ili umetanje elemenata koristimo tipke kao indeks. Ali za dodavanje novog rječnika u ChainMap koristimo sljedeći pristup.

a1 = {5: 'AI', 6: 'neuronske mreže'} c1 = c.new_child (a1) print (c1) # izlaz će biti ChainMap [{1: 'edureka', 2: 'python'}, { 3: 'znanost o podacima', 4: 'Strojno učenje'}, {5: 'AI', 6: 'neuronske mreže'}]

Brojač

Riječ je o podrazredu rječnika koji se koristi za brojanje hashable objekata.

Kako radi?

iz zbirki uvoz Brojač a = [1,1,1,1,2,3,3,4,3,3,4] c = Brojač (a) print (c) # izlaz će biti Counter = ({1: 4, 2: 1, 3: 4, 4: 2})

Pored operacija koje možete izvoditi na rječniku Brojač ima još 3 operacije koje možemo izvesti.

  1. funkcija elementa - Vraća popis koji sadrži sve elemente brojača.
  2. Most_common () - Vraća sortirani popis s brojem svakog elementa u Brojaču.
  3. Oduzmi () - uzima argument koji se može itirati i oduzima broj elemenata u brojaču.

NaređeniDict

Riječ je o podrazredu rječnika koji pamti redoslijed dodavanja unosa. U osnovi, čak i ako promijenite vrijednost ključa, položaj se neće promijeniti zbog redoslijeda u kojem je ubačen u rječnik.

Kako radi?

from collections import OrderedDict od = OrderedDict() od[1] = 'e' od[2] = 'd' od[3] = 'u' od[4] = 'r' od[5] = 'e' od[6] = 'k' od[7] = 'a' print(od) #the output will be OrderedDict[(1 , 'e'), (2 , 'd') , (3 , 'u'), (4 , 'r'), (5 , 'e'), (6 , 'k'), (7 , 'a')]

Nije važno koja se vrijednost ubacuje u rječnik, OrderedDict pamti redoslijed kojim je umetnuta i u skladu s tim dobiva izlaz. Čak i ako promijenimo vrijednost ključa. Recimo, ako promijenimo vrijednost ključa 4 na 8, redoslijed se neće promijeniti u izlazu.

zadana presuda

Riječ je o podrazredu rječnika koji poziva tvorničku funkciju za isporuku vrijednosti koje nedostaju. Općenito, ne dovodi do pogrešaka kada se u rječniku pozove vrijednost ključa koja nedostaje.

Kako radi?

iz zbirki import defaultdict d = defaultdict (int) # moramo navesti i vrstu. d [1] = 'edureka' d [2] = 'python' print (d [3]) # to će dati izlaz kao 0 umjesto keyerror.

UserDict

Ova klasa djeluje kao omot oko predmeta rječnika. Potreba za ovom klasom proizašla je iz potrebe za podrazredom izravno iz diktata. Postaje lakše raditi s ovom klasom jer temeljni rječnik postaje atribut.

kolekcije klasa.UserDict ([početni podaci])

Ovaj razred simulira rječnik. Sadržaj instance čuva se u redovnom rječniku kojem se može pristupiti s atributom 'data' klase UserDict. Referenca početnih podataka ne čuva se da bi se koristila u druge svrhe.

Popis korisnika

Ova klasa djeluje poput omota oko objekata popisa. Korisna je osnovna klasa za druge popise poput klasa koje se mogu naslijediti od njih i poništiti postojeće metode ili čak dodati i manje novih.

c ++ vrsta sortiranja

Potreba za ovom klasom proizašla je iz potrebe za podrazredom izravno s popisa. Lakše je raditi s ovom klasom jer temeljni popis postaje atribut.

kolekcije klasa.UserList ([popis])

Klasa je ta koja simulira popis. Sadržaj instance čuva se na uobičajenom popisu. Podrazrede popisa oslanjaju se na to da nude konstruktor koji se može nazvati bez ikakvog ili s jednim prepirom.

Na ovom smo blogu saznali o specijaliziranim strukturama podataka koje se isporučuju s modulom zbirki u pythonu. Optimizacija dovodi do boljih performansi i poboljšanih rezultata. Isto se odnosi i na vlastitu karijeru i vještine. Ako želite započeti svoje učenje i optimizirati način na koji doživljavate programiranje, upišite se u edureka's i oslobodite beskrajne mogućnosti s pythonom.

Imate li pitanja? spomenite ih u komentarima, a mi ćemo vam se javiti u najkraćem mogućem roku.