Zbierky v Pythone: Všetko, čo potrebujete vedieť o zbierkach Python



Tento blog bude pokrývať vstavané dátové typy zhromažďovania v pythone spolu s modulom zhromažďovania so všetkými špecializovanými dátovými štruktúrami zhromažďovania.

Programovací jazyk Python má štyri zberové dátové typy - zoznam , n-tica, sady a . ale tiež prichádza s vstavaným modulom známym ako kolekcie, ktorý má špecializované dátové štruktúry, ktoré v podstate pokrývajú nedostatky štyroch dátových typov. V tomto blogu podrobne prejdeme každú z týchto špecializovaných údajových štruktúr. Nasledujú témy zahalené týmto blogom:

Čo sú zbierky v Pythone?

Zbierky v pythone sú v zásade dátové typy kontajnerov, a to zoznamy, množiny, n-tice, slovník. Majú odlišné vlastnosti založené na vyhlásení a použití.





  • Zoznam je deklarovaný v hranatých zátvorkách, je premenlivý, ukladá duplicitné hodnoty a prvky sú prístupné pomocou indexov.

  • N-tica je usporiadaná a má nemennú povahu, hoci vo vnútri n-tice môžu byť duplicitné položky.



  • Sada je neusporiadaná a deklarovaná v hranatých zátvorkách. Nie je indexovaný a nemá ani duplicitné položky.

  • Slovník obsahuje páry kľúč - hodnota a je svojou povahou premenlivý. Na vyhlásenie slovníka používame hranaté zátvorky.

Toto sú vstavané dátové typy kontajnerov na všeobecné účely v pythone. Ale ako všetci vieme, krajta má vždy niečo navyše. Dodáva sa s modulom python s názvom collections, ktorý má špecializované dátové štruktúry.



Špecializované zbierky dátových štruktúr

Zbierky modul v pythone implementuje špecializované dátové štruktúry, ktoré poskytujú alternatívu k zabudovaným dátovým typom kontajnerov v pythone. Nasledujú špecializované dátové štruktúry v module zbierok.

  1. namedtuple ()
  2. a
  3. Chainmap
  4. Počítadlo
  5. OrderedDict
  6. defaultdict
  7. UserDict
  8. Zoznam používateľov
  9. UserString

namedtuple ()

Vráti n-ticu s pomenovanou položkou, čo znamená, že každej hodnote v n-tici bude priradený názov. Prekonáva problém prístupu k prvkom pomocou hodnôt indexu. S namedtuple () je ľahší prístup k týmto hodnotám, pretože na získanie konkrétnych prvkov si nemusíte pamätať hodnoty indexu.

pole zoradiť c ++

Ako to funguje?

Najskôr musíte importovať modul zbierok, ktorý nevyžaduje inštaláciu.

z importu kolekcií namedtuple

Pozrite sa na nasledujúci kód, aby ste pochopili, ako môžete použiť namedtuple.

a = namedtuple ('courses', 'name, tech') s = a ('data science', 'python') print (s) # výstupom budú kurzy (name = 'python', tech = 'python')

Ako vytvoriť pomenovanú dvojicu pomocou zoznamu?

s._make (['data science', 'python']) # # výstup bude rovnaký ako predtým.

a

deque vyslovovaný ako ‘deck‘ je optimalizovaný zoznam na ľahké vkladanie a mazanie.

Ako to funguje?

#creating a deque from collections import deque a = ['d', 'u', 'r', 'e', ​​'k'] a1 = deque (a) print (a1) # výstup bude deque ([' d ',' u ',' r ',' e ',' k '])

Teraz sa pozrime na to, ako vložíme a odstránime položky z deque.

a1.append ('a') print (a1) # výstup bude deque (['d', 'u', 'r', 'e', ​​'k', 'a']) a1.appendleft (' e ') print (a1) # výstup bude deque ([' e ',' d ',' u ',' r ',' e ',' k ',' a '])

Ako by malo byť zrejmé, vkladanie komponentov je vylepšené využitím deque, taktiež môžete tiež komponenty demontovať.

a1.pop () print (a1) # výstup bude deque (['e', 'd', 'u', 'r', 'e', ​​'k']) a1.popleft () print (a1 ) #výstup bude deque (['d', 'u', 'r', 'e', ​​'k'])

Podobne ako vstavané dátové typy existuje aj niekoľko ďalších operácií, ktoré môžeme vykonať v deque. Rovnako ako počítanie prvkov alebo čistenie dekády atď.

ChainMap

Je to trieda podobná slovníku, ktorá umožňuje jedno zobrazenie viacerých mapovaní. V zásade vráti zoznam niekoľkých ďalších slovníkov. Predpokladajme, že máte dva slovníky s niekoľkými pármi kľúčových hodnôt. V takom prípade ChainMap vytvorí jeden zoznam, v ktorom budú oba slovníky.

Ako to funguje?

z importov kolekcií ChainMap a = {1: 'edureka', 2: 'python'} b = {3: 'data science', 4: 'Machine learning'} c = ChainMap (a, b) print (c) #the výstupom bude ChainMap [{1: 'edureka', 2: 'python'}, {3: 'data science', 4: 'Machine learning'}]

Na prístup alebo vloženie prvkov používame kľúče ako index. Ale na pridanie nového slovníka do ChainMap použijeme nasledujúci prístup.

a1 = {5: 'AI', 6: 'neuronové siete'} c1 = c.new_child (a1) print (c1) # výstup bude ChainMap [{1: 'edureka', 2: 'python'}, { 3: „Data Science“, 4: „Machine Learning“}, {5: „AI“, 6: „Neural Networks}}]

Počítadlo

Je to podtrieda slovníka, ktorá sa používa na počítanie hašovateľných objektov.

Ako to funguje?

z importu kolekcií Počítadlo a = [1,1,1,1,2,3,3,4,3,3,4] c = Počítadlo (a) tlač (c) # výstup bude Počítadlo = ({1: 4, 2: 1, 3: 4, 4: 2})

Okrem operácií, ktoré môžete vykonať v slovníku, má počítadlo ešte 3 ďalšie operácie, ktoré môžeme vykonávať.

  1. funkcia prvku - Vráti zoznam obsahujúci všetky prvky v Počítadle.
  2. Most_common () - Vráti zoradený zoznam s počtom jednotlivých prvkov v počítadle.
  3. Subtract () - Berie iterovateľný objekt ako argument a odčíta počet prvkov v počítadle.

OrderedDict

Je to podtrieda slovníka, ktorá si pamätá poradie, v ktorom boli položky pridané. V zásade, aj keď zmeníte hodnotu kľúča, pozícia sa nezmení z dôvodu poradia, v akom bola vložená do slovníka.

Ako to funguje?

z importu zbierok OrderedDict od = OrderedDict () od [1] = 'e' od [2] = 'd' od [3] = 'u' od [4] = 'r' od [5] = 'e' od [6] = 'k' z [7] = 'a' tlač (z) #výstup bude OrderedDict [(1, 'e'), (2, 'd'), (3, 'u'), (4, „r“), (5, „e“), (6, „k“), (7, „a“)]

Nezáleží na tom, aká hodnota sa vloží do slovníka, OrderedDict si pamätá poradie, v akom bola vložená, a podľa toho získa výstup. Aj keď zmeníme hodnotu kľúča. Povedzme, že ak zmeníme hodnotu kľúča 4 na 8, poradie sa na výstupe nezmení.

defaultdict

Je to podtrieda slovníka, ktorá volá továrenskú funkciu na dodanie chýbajúcich hodnôt. Vo všeobecnosti nevyvoláva žiadne chyby, keď sa v slovníku volá chýbajúca hodnota kľúča.

Ako to funguje?

z kolekcií import defaultdict d = defaultdict (int) # musíme zadať aj typ. d [1] = 'edureka' d [2] = 'python' print (d [3]) # bude mať výstup ako 0 namiesto keyerror.

UserDict

Táto trieda funguje ako obal okolo slovníkových objektov. Potreba tejto triedy vyplynula z potreby podtriedy priamo z diktátu. S touto triedou je jednoduchšie pracovať, pretože základný slovník sa stáva atribútom.

zbierky tried.UserDict ([initialdata])

Táto trieda simuluje slovník. Obsah inštancie sa uchováva v bežnom slovníku, ku ktorému je možné pristupovať pomocou atribútu ‘data’ triedy UserDict. Odkaz na počiatočné údaje sa neuchováva, aby sa mohol použiť na iné účely.

Zoznam používateľov

Táto trieda funguje ako obal okolo objektov zoznamu. Je to užitočná základná trieda pre ďalšie triedy, ako sú triedy, ktoré od nich môžu dediť a prepísať existujúce metódy alebo dokonca pridať menej nových.

Potreba tejto triedy vyplynula z potreby podtriedy priamo zo zoznamu. S touto triedou je jednoduchšie pracovať, pretože podkladový zoznam sa stáva atribútom.

zbierky tried.UserList ([zoznam])

Je to trieda, ktorá simuluje zoznam. Obsah inštancie sa uchováva v obvyklom zozname. Podtriedy zoznamu sa spoliehajú na to, že ponúkajú konštruktor, ktorý je možné volať buď bez, alebo s jedným tvrdením.

C ++ fibonacciho rekurzia

V tomto blogu sme sa dozvedeli o špecializovaných dátových štruktúrach, ktoré sú dodávané s modulom kolekcie v pythone. Optimalizácia vedie k lepšiemu výkonu a lepším výsledkom. To isté platí aj pre našu vlastnú kariéru a zručnosti. Ak chcete naštartovať svoje učenie a optimalizovať spôsob, akým vnímate programovanie, zaregistrujte sa do edureky a uvoľnite nekonečné možnosti s pythonom.

Máte nejaké otázky? uveďte ich v komentároch a my sa vám ozveme čo najskôr.