Kolekcijas Python: Viss, kas jums jāzina par Python kolekcijām



Šajā emuārā tiks apskatīti iebūvētie kolekcijas datu tipi pitonā kopā ar kolekciju moduli ar visām specializētajām kolekcijas datu struktūrām.

Python programmēšanas valodai ir četri kolekcijas datu tipi - sarakstā , dubultā, komplekti un . Bet Komplektā ietilpst arī iebūvēts modulis, kas pazīstams kā kolekcijas un kuram ir specializētas datu struktūras, kas galvenokārt aptver četru datu tipu trūkumus. Šajā emuārā mēs detalizēti izskatīsim katru no šīm specializētajām datu struktūrām. Šajā emuārā ir ietvertas šādas tēmas:

Kas ir Python kolekcijas?

Kolekcijas pitonā būtībā ir konteineru datu tipi, proti, saraksti, kopas, kopas, vārdnīca. Viņiem ir dažādas īpašības, pamatojoties uz deklarāciju un lietojumu.





  • Saraksts ir deklarēts kvadrātiekavās, tas ir maināms, glabā vērtību dublikātus un elementiem var piekļūt, izmantojot rādītājus.

    c vs c ++ vs java
  • Kopa ir pasūtīta un nemainīga pēc būtības, kaut arī dubultā ieraksti var atrasties dubultā.



  • Komplekts nav sakārtots un deklarēts kvadrātiekavās. Tas nav indeksēts, un tam nav arī ierakstu dublikātu.

  • Vārdnīcai ir atslēgu vērtību pāri, un tā ir maināma. Mēs deklarējam vārdnīcu kvadrātiekavās.

Šie ir pitona vispārējas nozīmes iebūvētie konteineru datu tipi. Bet, kā mēs visi zinām, pitonam vienmēr ir pieejams kaut kas papildus. Tas nāk ar pitona moduli ar nosaukumu kolekcijas, kam ir specializētas datu struktūras.



Specializētas datu vākšanas struktūras

Kolekcijas modulis pitonā ievieš specializētas datu struktūras, kas nodrošina alternatīvu python iebūvētajiem konteineru datu tipiem. Tālāk ir norādītas specializētās datu struktūras kolekciju modulī.

  1. namedtuple ()
  2. un
  3. Ķēdes karte
  4. Skaitītājs
  5. PasūtītsDikt
  6. defaultdict
  7. UserDict
  8. Lietotāju saraksts
  9. UserString

namedtuple ()

Tas atgriež kopu ar nosauktu ierakstu, kas nozīmē, ka katrai vērtību vērtībai tiks piešķirts nosaukums. Tas pārvar problēmu, kā piekļūt elementiem, izmantojot indeksa vērtības. Izmantojot nosauktouple (), kļūst vieglāk piekļūt šīm vērtībām, jo, lai iegūtu konkrētus elementus, jums nav jāatceras indeksa vērtības.

Kā tas strādā?

Pirmkārt, jums jāimportē kolekciju modulis, tas nav nepieciešams instalēt.

no kolekcijām importētupu

Apskatiet šo kodu, lai saprastu, kā jūs varat izmantot namedtuple.

a = namedtuple ('kursi', 'nosaukums, tehnoloģija') s = a ('datu zinātne', 'python') izdruka (s) # izeja būs kursi (nosaukums = 'python', tech = 'python')

Kā izveidot nosaukumu pāris, izmantojot sarakstu?

s._make (['datu zinātne', 'python']) # izeja būs tāda pati kā iepriekš.

un

deque, kas izrunāts kā 'klājs', ir optimizēts saraksts, lai ērti veiktu ievietošanu un dzēšanu.

Kā tas strādā?

# deque izveide no kolekcijām import deque a = ['d', 'u', 'r', 'e', ​​'k'] a1 = deque (a) print (a1) # izeja būs deque ([' d ',' u ',' r ',' e ',' k '])

Tagad ļaujiet apskatīt, kā mēs ievietosim un noņemsim priekšmetus no deque.

a1.append ('a') print (a1) # izeja būs deque (['d', 'u', 'r', 'e', ​​'k', 'a']) a1.appendleft (' e ') print (a1) # izeja būs deque ([' e ',' d ',' u ',' r ',' e ',' k ',' a '])

Kā vajadzētu būt acīmredzamam, komponenta ievietošana tiek uzlabota, izmantojot deque, kā arī jūs varat noņemt arī komponentus.

a1.pop () print (a1) # izeja būs deque (['e', 'd', 'u', 'r', 'e', ​​'k']) a1.popleft () print (a1 ) # izeja būs deque (['d', 'u', 'r', 'e', ​​'k'])

Līdzīgi iebūvētajiem datu tipiem, ir vairākas citas darbības, kuras mēs varam veikt ar deque. Tāpat kā elementu skaitīšana vai deque notīrīšana utt.

Ķēdes karte

Tā ir vārdnīca, piemēram, klase, kas spēj izveidot vienu skatu no vairākiem kartējumiem. Būtībā tas atgriež vairāku citu vārdnīcu sarakstu. Pieņemsim, ka jums ir divas vārdnīcas ar vairākiem galveno vērtību pāriem, šajā gadījumā ChainMap izveidos vienu sarakstu ar abām vārdnīcām.

Kā tas strādā?

no kolekcijām importējiet ChainMap a = {1: 'edureka', 2: 'python'} b = {3: 'data science', 4: 'Machine learning' c = ChainMap (a, b) print (c) #the izeja būs ChainMap [{1: 'edureka', 2: 'python'}, {3: 'datu zinātne, 4:' Mašīnmācība '}]

Lai piekļūtu elementiem vai tos ievietotu, atslēgas izmantojam kā rādītāju. Bet, lai ChainMap pievienotu jaunu vārdnīcu, mēs izmantojam šādu pieeju.

a1 = {5: 'AI', 6: 'neironu tīkli'} c1 = c. new_child (a1) print (c1) # izeja būs ChainMap [{1: 'edureka', 2: 'python'}, { 3: 'datu zinātne', 4: 'mašīnmācīšanās'}, {5: 'AI', 6: 'neironu tīkli'}]

Skaitītājs

Tā ir vārdnīcas apakšklase, kuru izmanto, lai saskaitītu jaucamus objektus.

kāda ir atšķirība starp java un c ++

Kā tas strādā?

no kolekciju importa Counter a = [1,1,1,1,2,3,3,4,3,3,4] c = Counter (a) print (c) # izeja būs Counter = ({1: 4, 2: 1, 3: 4, 4: 2})

Papildus darbībām, kuras varat veikt vārdnīcā, Counter ir vēl 3 darbības, kuras mēs varam veikt.

  1. elementa funkcija - tā atgriež sarakstu, kurā ir visi skaitītāja elementi.
  2. Most_common () - tas atgriež sakārtotu sarakstu ar katra skaitītāja elementu skaitu.
  3. Atņemt () - tas ņem iterējamu objektu kā argumentu un atskaita skaitītāju elementu skaitu.

PasūtītsDikt

Tā ir vārdnīcas apakšklase, kas atceras ierakstu pievienošanas secību. Būtībā, pat mainot atslēgas vērtību, pozīcija netiks mainīta secības dēļ, kādā tā tika ievietota vārdnīcā.

Kā tas strādā?

no kolekciju importa OrderedDict od = OrderedDict () od [1] = 'e' od [2] = 'd' od [3] = 'u' od [4] = 'r' od [5] = 'e' od [6] = 'k' no [7] = 'a' print (from) # izeja tiks pasūtītaDict [(1, 'e'), (2, 'd'), (3, 'u'), (4, 'r'), (5, 'e'), (6, 'k'), (7, 'a')]

Nav svarīgi, kāda vērtība tiek ievietota vārdnīcā, OrderedDict atceras ievietošanas secību un attiecīgi iegūst izvadi. Pat ja mēs mainām atslēgas vērtību. Ļaujiet teikt, ja mēs mainīsim atslēgas vērtību 4 uz 8, secība nemainīsies izvadē.

defaultdict

Tā ir vārdnīcas apakšklase, kas izsauc rūpnīcas funkciju, lai sniegtu trūkstošās vērtības. Kopumā tas neizmet kļūdas, ja vārdnīcā tiek izsaukta trūkstošā atslēgas vērtība.

Kā tas strādā?

rekursīvais fibonacci c ++
no kolekcijām importēt defaultdict d = defaultdict (int) # mums jānorāda arī tips. d [1] = 'edureka' d [2] = 'python' print (d [3]) # tas izvadi piešķirs kā 0, nevis atslēgu kļūdu.

UserDict

Šī klase darbojas kā iesaiņojums ap vārdnīcas objektiem. Nepieciešamība pēc šīs klases radās no nepieciešamības apakšklasē tieši no diktāta. Darbu ar šo klasi kļūst vieglāk, jo pamatā esošā vārdnīca kļūst par atribūtu.

klases kolekcijas.UserDict ([sākotnējie dati])

Šī klase simulē vārdnīcu. Instances saturs tiek glabāts parastajā vārdnīcā, kurai var piekļūt ar UserDict klases atribūtu ‘data’. Sākotnējo datu atsauce netiek saglabāta, lai to varētu izmantot citiem mērķiem.

Lietotāju saraksts

Šī klase darbojas kā ietīšana ap saraksta objektiem. Tā ir noderīga bāzes klase citiem sarakstiem, piemēram, klasēm, kuras var mantot no tām un ignorēt esošās metodes vai pat pievienot mazāk jaunu.

Nepieciešamība pēc šīs klases radās no nepieciešamības apakšklasē tieši no saraksta. Darbu ar šo klasi kļūst vieglāk, jo pamatā esošais saraksts kļūst par atribūtu.

klases kolekcijas.UserList ([saraksts])

Tā ir klase, kas simulē sarakstu. Instances saturs tiek glabāts ierastajā sarakstā. Tiek paļauties uz saraksta apakšklasēm, lai piedāvātu konstruktoru, kuru var izsaukt vai nu bez, vai ar vienu strīdu.

Šajā emuārā mēs esam uzzinājuši par specializētajām datu struktūrām, kas nāk ar Python kolekciju moduli. Optimizācija nodrošina labāku sniegumu un uzlabotus rezultātus. Tas pats attiecas arī uz mūsu pašu karjeru un prasmēm. Ja vēlaties sākt mācīšanos un optimizēt to, kā uztverat programmēšanu, reģistrējieties edureka un atraisiet bezgalīgas iespējas ar pitonu.

Vai jums ir kādi jautājumi? pieminējiet tos komentāros, un mēs sazināsimies ar jums pēc iespējas ātrāk.