Gyűjtemények a Pythonban: Minden, amit tudnia kell a Python-gyűjteményekről

Ez a blog a python beépített gyűjtemény-adattípusait, valamint a gyűjtemény-modult és az összes speciális gyűjtési adatszerkezetet ismerteti.

A Python programozási nyelvnek négy gyűjtési adattípusa van- lista , kettő, szett és . De Gyűjteményként is ismert beépített modullal rendelkezik, amely speciális adatstruktúrákkal rendelkezik, amelyek alapvetően a négy adattípus hiányosságait fedezik. Ebben a blogban részletesen áttekintjük ezeket a speciális adatstruktúrákat. A következő témaköröket takarják a blogba:



Mik a gyűjtemények a Pythonban?

A python gyűjteményei alapvetően konténertípusok, nevezetesen listák, halmazok, tömbök, szótárak. Különböző tulajdonságokkal rendelkeznek a deklaráció és a felhasználás alapján.



  • A lista szögletes zárójelben van feltüntetve, változtatható, tárolja az ismétlődő értékeket, és az elemek indexek segítségével érhetők el.

  • A kettő rendezett és változhatatlan jellegű, bár a duplán belül duplikált bejegyzések is találhatók.



  • A készlet rendezetlen és szögletes zárójelben van feltüntetve. Nincs indexelve, és nincsenek ismétlődő bejegyzései sem.

  • Egy szótár kulcsértékpárokkal rendelkezik, és változékony jellegű. Szögletes zárójelben használjuk a szótár deklarálását.

Ezek a python általános célú beépített tároló adattípusai. De mint mindannyian tudjuk, a pythonnak mindig van valami apró kínálata. Gyűjtemények nevű python modullal rendelkezik, amely speciális adatstruktúrákkal rendelkezik.



Speciális adatgyűjtési struktúrák

Gyűjtemények modul a pythonban speciális adatstruktúrákat valósít meg, amelyek alternatívát kínálnak a python beépített tároló adattípusaihoz. Az alábbiakban bemutatjuk a gyűjtemények speciális adatstruktúráit.

  1. namedtuple ()
  2. és
  3. Lánctérkép
  4. Számláló
  5. RendeltDict
  6. defaultdict
  7. UserDict
  8. UserList
  9. UserString

namedtuple ()

Visszaad egy duplát megnevezett bejegyzéssel, ami azt jelenti, hogy a duplán minden értékhez név lesz rendelve. Leküzdi azt a problémát, hogy az elemek az indexértékek segítségével érhetők el. A namedtuple () használatával könnyebb hozzáférni ezekhez az értékekhez, mivel nem kell emlékeznie az indexértékekre, hogy konkrét elemeket kapjon.

Hogyan működik?

Először is importálnia kell a gyűjtemény modulokat, ez nem igényel telepítést.

a gyűjteményekből importálja a duplát

Nézze meg a következő kódot, hogy megértse, hogyan használható a namedtuple.

a = namedtuple ('tanfolyamok', 'név, tech') s = a ('adat tudomány', 'python') nyomtatás (ok) # a kimenet tanfolyamok lesznek (név = 'python', tech = 'python')

Hogyan hozzunk létre egy megnevezett párosot egy lista használatával?

s._make (['data science', 'python']) # a kimenet ugyanaz lesz, mint korábban.

és

A „deck” -nek kiejtett deque egy optimalizált lista a beillesztés és a törlés egyszerű elvégzéséhez.

Hogyan működik?

# deque létrehozása a gyűjteményekből import deque a = ['d', 'u', 'r', 'e', ​​'k'] a1 = deque (a) print (a1) # a kimenet deque ([' d ',' u ',' r ',' e ',' k '])

Most nézzük meg, hogyan fogjuk beilleszteni és eltávolítani az elemeket a deque-ből.

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

Mint nyilvánvaló, az alkatrész behelyezése javul a deque használatával, és az alkatrészeket is eltávolíthatja.

a1.pop () print (a1) # # a kimenet deque lesz (['e', 'd', 'u', 'r', 'e', ​​'k']) a1.popleft () print (a1 ) # a kimenet deque lesz (['d', 'u', 'r', 'e', ​​'k'])

A beépített adattípusokhoz hasonlóan számos más műveletet is elvégezhetünk deque-n. Mint például az elemek számlálása vagy a deque tisztítása stb.

ChainMap

Ez egy olyan szótár, mint az osztály, amely képes egyetlen leképezést készíteni több leképezésről. Alapvetően számos más szótár listáját adja vissza. Tegyük fel, hogy van két szótárad, több kulcsértékpárral, ebben az esetben a ChainMap egyetlen listát készít, benne mindkét szótárral.

Hogyan működik?

konvertálni dupla int java
a gyűjteményekből importálja a ChainMap a = {1: 'edureka', 2: 'python'} b = {3: 'data science', 4: 'Machine learning' c = ChainMap (a, b) print (c) #the a kimenet ChainMap lesz [{1: 'edureka', 2: 'python'}, {3: 'data science, 4:' Machine learning '}]

Az elemek eléréséhez vagy beszúrásához a kulcsokat indexként használjuk. De egy új szótár hozzáadásához a ChainMap-hoz a következő megközelítést alkalmazzuk.

a1 = {5: 'AI', 6: 'neurális hálózatok' c1 = c.új_gyerek (a1) print (c1) # a kimenet ChainMap lesz [{1: 'edureka', 2: 'python'}, { 3: 'adat tudomány', 4: 'gépi tanulás', {5: 'AI', 6: 'idegi hálózatok'}]

Számláló

Ez egy szótár-alosztály, amelyet hashable objektumok számlálására használnak.

Hogyan működik?

a gyűjteményekből importál számláló a = [1,1,1,1,2,3,3,4,3,3,4] c = számláló (a) print (c) # a kimenet Counter = ({1: 4, 2: 1, 3: 4, 4: 2})

A szótárban végrehajtható műveleteken kívül a számláló további 3 művelettel rendelkezik, amelyeket végre tudunk hajtani.

  1. elem függvény - Visszaad egy listát, amely a számláló összes elemét tartalmazza.
  2. Most_common () - Rendezett listát ad vissza a számláló egyes elemeinek számával.
  3. Kivonás () - Egy iterálható objektumot vesz fel argumentumként, és levonja a számláló elemeinek számát.

RendeltDict

Ez egy szótár-alosztály, amely emlékszik a bejegyzések hozzáadásának sorrendjére. Alapvetően, még akkor is, ha megváltoztatja a kulcs értékét, a pozíció nem változik a szótárba való beillesztés sorrendje miatt.

Hogyan működik?

gyűjteményekből importálva OrderedDict od = OrderedDict () od [1] = 'e' od [2] = 'd' od [3] = 'u' od [4] = 'r' od [5] = 'e' od [6] = 'k' from [7] = 'a' print (from) # a kimenet rendezve lesz: Dict [(1, 'e'), (2, 'd'), (3, 'u'), (4, 'r'), (5, 'e'), (6, 'k'), (7, 'a')]

Nem számít, hogy milyen érték kerül beillesztésre a szótárba, a OrderedDict emlékszik a beillesztés sorrendjére, és ennek megfelelően megkapja a kimenetet. Még akkor is, ha megváltoztatjuk a kulcs értékét. Mondjuk, ha a 4 kulcsértéket 8-ra változtatjuk, akkor a sorrend nem változik a kimenetben.

defaultdict

Ez egy szótár-alosztály, amely gyári függvényt hív meg hiányzó értékek megadására. Általában nem dob hibákat, ha egy hiányzó kulcsértéket hívnak meg egy szótárban.

Hogyan működik?

gyűjteményekből importáld defaultdict d = defaultdict (int) # típust is meg kell adnunk. d [1] = 'edureka' d [2] = 'python' print (d [3]) # ez adja meg a kimenetet 0-ként a kulcshiba helyett.

UserDict

Ez az osztály burkolóként működik a szótár objektumok körül. Ennek az osztálynak az igénye abból adódott, hogy közvetlenül a diktáltól kellett alosztályt tartani. Könnyebb ezzel az osztállyal dolgozni, mivel az alapul szolgáló szótár attribútummá válik.

osztály gyűjtemények. UsserDict ([kezdeti adatok])

Ez az osztály szótárat szimulál. A példány tartalmát egy szokásos szótárban őrzik, amely a UserDict osztály ’data’ attribútumával érhető el. A kezdeti adatok hivatkozását nem őrzik meg, így más célokra használhatók fel.

UserList

Ez az osztály úgy viselkedik, mint egy burkoló a listaobjektumok körül. Hasznos alaposztály más listákhoz, például olyan osztályokhoz, amelyek örökölhetnek tőlük, felülírhatják a meglévő módszereket, vagy akár kevesebb újat is felvehetnek.

Ennek az osztálynak az igénye abból adódott, hogy közvetlenül a listáról kellett alosztályt adni. Könnyebb ezzel az osztállyal dolgozni, mivel az alapul szolgáló lista attribútummá válik.

osztály gyűjtemények.UserList ([lista])

Az osztály szimulálja a listát. A példány tartalma egy szokásos listában van. A lista alkategóriáira támaszkodunk, ha olyan konstruktort kínálunk, amelyet akár egyetlen, akár egyetlen vitával lehet meghívni.

Ebben a blogban megismerkedhettünk a python gyűjtemény moduljával járó speciális adatstruktúrákkal. Az optimalizálás jobb teljesítményhez és jobb eredményekhez vezet. Ugyanez vonatkozik saját karrierünkre és képességeinkre is. Ha szeretné elindítani a tanulást és optimalizálni a programozás érzékelését, jelentkezzen be az edureka-ba és szabadítsd fel a végtelen lehetőségeket a python segítségével.

Van kérdése? említse meg őket megjegyzésekben, és a lehető leghamarabb kapcsolatba lépünk Önnel.