Kolekce v Pythonu: Vše, co potřebujete vědět o kolekcích v Pythonu



Tento blog se bude zabývat předdefinovanými datovými typy kolekce v pythonu spolu s modulem kolekce se všemi specializovanými datovými strukturami kolekce.

Programovací jazyk Python má čtyři datové typy sběru - seznam , n-tice, sady a . Ale také přichází s vestavěným modulem známým jako kolekce, který má specializované datové struktury, které v zásadě pokrývá nedostatky čtyř datových typů. V tomto blogu podrobně projdeme každou z těchto specializovaných datových struktur. Níže jsou uvedeny předměty zahalené do tohoto blogu:

Co jsou sbírky v Pythonu?

Kolekce v pythonu jsou v zásadě datové typy kontejnerů, jmenovitě seznamy, sady, n-tice, slovník. Mají různé vlastnosti založené na deklaraci a použití.





  • Seznam je deklarován v hranatých závorkách, je proměnlivý, ukládá duplicitní hodnoty a prvky jsou přístupné pomocí indexů.

  • N-tice je v přírodě uspořádaná a neměnná, i když uvnitř n-tice mohou být duplicitní položky.



  • Sada je neuspořádaná a deklarovaná v hranatých závorkách. Není indexován a nemá také duplicitní položky.

  • Slovník obsahuje páry klíč-hodnota a je proměnlivý. K deklaraci slovníku používáme hranaté závorky.

Jedná se o vestavěné datové typy kontejnerů pythonu pro obecné účely. Ale jak všichni víme, python má vždy něco navíc. Dodává se s modulem pythonu s názvem kolekce, který má specializované datové struktury.



Specializované datové struktury pro sběr

Sbírky modul v pythonu implementuje specializované datové struktury, které poskytují alternativu k integrovaným kontejnerovým datovým typům pythonu. Následuje modul specializovaných datových struktur v kolekcích.

  1. namedtuple ()
  2. a
  3. Chainmap
  4. Čelit
  5. OrderedDict
  6. defaultdict
  7. UserDict
  8. Seznam uživatelů
  9. UserString

namedtuple ()

Vrátí n-tici s pojmenovanou položkou, což znamená, že ke každé hodnotě v n-tici bude přiřazen název. Překonává problém přístupu k prvkům pomocí hodnot indexu. S namedtuple () je snazší přístup k těmto hodnotám, protože pro získání konkrétních prvků si nemusíte pamatovat hodnoty indexu.

rozdíl mezi kuchařem a loutkou

Jak to funguje?

Nejprve musíte importovat modul sbírek, nevyžaduje instalaci.

z importu sbírek pojmenovanýupuple

Podívejte se na následující kód, abyste pochopili, jak můžete použít namedtuple.

a = namedtuple ('courses', 'name, tech') s = a ('data science', 'python') print (s) # výstupem budou kurzy (name = 'python', tech = 'python')

Jak vytvořit pojmenovaný tuple pomocí seznamu?

s._make (['data science', 'python']) # výstup bude stejný jako dříve.

a

deque vyslovuje se jako „balíček“ je optimalizovaný seznam pro snadné vkládání a mazání.

Jak 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 '])

Nyní se podívejme na to, jak vložíme a odstraníme 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 '])

Jak by mělo být zřejmé, vkládání komponenty je vylepšeno využitím deque, můžete také odebrat komponenty.

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'])

Podobně jako předdefinované datové typy existuje několik dalších operací, které můžeme provádět na deque. Jako počítání prvků nebo čištění deque atd.

ChainMap

Jedná se o třídu podobnou slovníku, která dokáže vytvořit jeden pohled na více mapování. V zásadě vrací seznam několika dalších slovníků. Předpokládejme, že máte dva slovníky s několika páry klíčových hodnot, v tomto případě ChainMap vytvoří jeden seznam s oběma slovníky.

Jak to funguje?

ze sbírek importovat ChainMap a = {1: 'edureka', 2: 'python'} b = {3: 'data science', 4: 'Machine learning'} c = ChainMap (a, b) print (c) #the výstup bude ChainMap [{1: 'edureka', 2: 'python'}, {3: 'data science', 4: 'Machine learning'}]

Pro přístup nebo vložení prvků používáme klíče jako rejstřík. Ale abychom do ChainMap přidali nový slovník, použijeme následující přístup.

a1 = {5: 'AI', 6: 'neuronové sítě'} c1 = c.new_child (a1) print (c1) # výstup bude ChainMap [{1: 'edureka', 2: 'python'}, { 3: „data science“, 4: „Machine learning“}, {5: „AI“, 6: „neuron network“}]

Čelit

Jedná se o podtřídu slovníku, která se používá k počítání hašovatelných objektů.

Jak to funguje?

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

Kromě operací, které můžete provádět ve slovníku, má Counter ještě 3 další operace, které můžeme provádět.

  1. funkce prvku - Vrátí seznam obsahující všechny prvky v Počítadle.
  2. Most_common () - Vrátí seřazený seznam s počtem jednotlivých prvků v Counter.
  3. Subtract () - Vezme iterovatelný objekt jako argument a odečte počet prvků v Counter.

OrderedDict

Jedná se o podtřídu slovníku, která si pamatuje pořadí, ve kterém byly položky přidány. V zásadě, i když změníte hodnotu klíče, poloha se nezmění kvůli pořadí, ve kterém byla vložena do slovníku.

Jak to funguje?

z importu sbírek OrderedDict od = OrderedDict () od [1] = 'e' od [2] = 'd' od [3] = 'u' od [4] = 'r' od [5] = 'e' od [6] = 'k' od [7] = 'a' tisk (od) #výstup bude OrderedDict [(1, 'e'), (2, 'd'), (3, 'u'), (4, 'r'), (5, 'e'), (6, 'k'), (7, 'a')]

Nezáleží na tom, jaká hodnota je vložena do slovníku, OrderedDict si pamatuje pořadí, ve kterém byla vložena, a odpovídajícím způsobem získá výstup. I když změníme hodnotu klíče. Řekněme, že pokud změníme hodnotu klíče na 4 až 8, pořadí se na výstupu nezmění.

defaultdict

Jedná se o podtřídu slovníku, která volá tovární funkci a dodává chybějící hodnoty. Obecně platí, že při vyvolání chybějící hodnoty klíče ve slovníku nevyvolá žádné chyby.

Jak to funguje?

ze sbírek import defaultdict d = defaultdict (int) # musíme také určit typ. d [1] = 'edureka' d [2] = 'python' print (d [3]) #it dá výstup jako 0 místo keyerror.

UserDict

Tato třída funguje jako obálka kolem slovníkových objektů. Potřeba této třídy vycházela z nutnosti podtřídy přímo z diktátu. Práce s touto třídou se stává jednodušší, protože základní slovník se stává atributem.

kolekce tříd.UserDict ([initialdata])

Tato třída simuluje slovník. Obsah instance je uchováván v běžném slovníku, ke kterému lze přistupovat pomocí atributu ‘data‘ třídy UserDict. Odkaz na počáteční data se neuchovává, aby mohl být použit pro jiné účely.

Seznam uživatelů

Tato třída funguje jako obal kolem objektů seznamu. Je to užitečná základní třída pro jiné seznamy, jako jsou třídy, které z nich mohou dědit a přepsat existující metody nebo dokonce přidat méně nových.

Potřeba této třídy vycházela z nutnosti podtřídy přímo ze seznamu. Práce s touto třídou se stává jednodušší, protože základní seznam se stává atributem.

kolekce tříd.UserList ([seznam])

Je to třída, která simuluje seznam. Obsah instance je uložen v obvyklém seznamu. Podtřídy seznamu se spoléhají na to, že nabízejí konstruktor, který lze volat s žádným nebo jedním tvrzením.

C ++ fibonacciho rekurze

V tomto blogu jsme se dozvěděli o specializovaných datových strukturách, které přicházejí s modulem sbírky v pythonu. Optimalizace vede k lepšímu výkonu a vylepšeným výsledkům. Totéž platí i pro naši vlastní kariéru a dovednosti. Pokud chcete nastartovat učení a optimalizovat způsob, jakým vnímáte programování, přihlaste se do edureky a uvolněte nekonečné možnosti s pythonem.

Máte nějaké dotazy? zmínit je v komentářích a my se vám ozveme co nejdříve.