Pythoni kogud: kõik, mida peate teadma Pythoni kogude kohta



See ajaveeb käsitleb pythoni sisseehitatud kollektsiooni andmetüüpe koos kogumismooduliga ja kõigi spetsiaalsete koguandmete struktuuridega.

Pythoni programmeerimiskeelel on neli kollektsiooni andmetüüpi- nimekirja , kahekordne, komplektid ja . Aga Kaasas on ka sisseehitatud moodulitena tuntud moodul, millel on spetsiaalsed andmestruktuurid, mis katavad põhimõtteliselt nelja andmetüübi puudused. Selles blogis vaatame üksikasjalikult läbi kõik need spetsiaalsed andmestruktuurid. Selles blogis on varjatud järgmised teemad:

Mis on Pythoni kogud?

Pythoni kogud on põhimõtteliselt konteinerandmete tüübid, nimelt loendid, komplektid, korrektsioonid, sõnastik. Neil on deklaratsiooni ja kasutamise põhjal erinevad omadused.





  • Loend on deklareeritud nurksulgudes, see on muudetav, salvestab duplikaatväärtusi ja elementidele pääseb juurde indeksite abil.

  • Tupel on tellitud ja olemuselt muutumatu, ehkki duplikaadi sisestused võivad seal olla ka dupleksi sees.



  • Komplekt on järjestamata ja deklareeritud nurksulgudes. See ei ole indekseeritud ja sellel pole ka duplikaatkirjeid.

  • Sõnastikul on võtmeväärtuste paarid ja see on oma olemuselt muutuv. Sõnaraamatu deklareerimiseks kasutame nurksulgudes.

Need on pythoni üldotstarbelised sisseehitatud konteinerite andmetüübid. Kuid nagu me kõik teame, on pythonil alati midagi ekstra pakkuda. Kaasas on pythoni moodul nimega kogumid, millel on spetsiaalsed andmestruktuurid.



Spetsiaalsed andmete kogumise struktuurid

Kogud moodul pythonis rakendab spetsiaalseid andmestruktuure, mis pakuvad alternatiivi pythoni sisseehitatud konteinerandmete tüüpidele. Järgnevalt on toodud kogude mooduli spetsiaalsed andmestruktuurid.

  1. nimega paar ()
  2. ja
  3. Kettakaart
  4. Loendur
  5. OrderedDict
  6. defaultdict
  7. UserDict
  8. Kasutajaloend
  9. UserString

nimega paar ()

See tagastab nimelise kirjega duplikaadi, mis tähendab, et igale väärtusele määratakse nimi. See ületab indeksi väärtuste abil elementidele juurdepääsu probleemi. Nimegatuple () saab nendele väärtustele juurde pääseda, kuna konkreetsete elementide saamiseks ei pea te indeksi väärtusi meeles pidama.

Kuidas see töötab?

Kõigepealt peate importima kollektsioonimooduli, see ei vaja installimist.

qtp ja seleeni vahe
kogudest impordi nimega paar

Vaadake järgmist koodi, et mõista, kuidas saate nimega dupleksi kasutada.

a = namedtuple ('kursused', 'nimi, tehnoloogia') s = a ('andmeteadus', 'python') print (id) # väljundiks on kursused (nimi = 'python', tech = 'python')

Kuidas nimekirja abil luua nimega paar?

s._make (['andmeteadus', 'python']) # väljund on sama mis varem.

ja

deque, mida hääldatakse tekina, on optimeeritud loend hõlpsaks sisestamiseks ja kustutamiseks.

Kuidas see töötab?

# deque'i loomine kogudest impordi deque a = ['d', 'u', 'r', 'e', ​​'k'] a1 = deque (a) print (a1) # väljund on deque ([' d, u, r, e, k)])

Vaatame nüüd, kuidas me deque'ist üksusi sisestame ja eemaldame.

a1.append ('a') print (a1) # väljund on deque (['d', 'u', 'r', 'e', ​​'k', 'a']) a1.appendleft (' e ') print (a1) # väljund on deque ([' e ',' d ',' u ',' r ',' e ',' k ',' a '])

Nagu peaks olema ilmne, on komponendi sisestamine deque abil parem, samuti võite ka komponendid eemaldada.

a1.pop () print (a1) # väljund on deque (['e', 'd', 'u', 'r', 'e', ​​'k']) a1.popleft () print (a1 ) #väljund on deque (['d', 'u', 'r', 'e', ​​'k'])

Sarnaselt sisseehitatud andmetüüpidele on ka mitmeid muid toiminguid, mida saame teha deque'iga. Nagu elementide loendamine või deque'i puhastamine jne.

Kettkaart

See on sõnastik nagu klass, mis on võimeline tegema ühe vaate mitmest kaardistamisest. Põhimõtteliselt tagastab see veel mitme teise sõnaraamatu loendi. Oletame, et teil on kaks sõnastikku, millel on mitu põhiväärtuste paari, sel juhul teeb ChainMap ühe loendi, milles on mõlemad sõnastikud.

Kuidas see töötab?

kogudest importige ChainMap a = {1: 'edureka', 2: 'python'} b = {3: 'andmeteadus', 4: 'masinõpe' c = ChainMap (a, b) print (c) #the väljundiks on ChainMap [{1: 'edureka', 2: 'python'}, {3: 'andmeteadus', 4: 'masinõpe'}]

Elementidele juurde pääsemiseks või nende sisestamiseks kasutame võtmeid indeksina. Kuid uue sõnastiku lisamiseks ChainMap'i kasutame järgmist lähenemisviisi.

a1 = {5: 'AI', 6: 'närvivõrgud'} c1 = c.uusi_laps (a1) print (c1) # väljundiks on ChainMap [{1: 'edureka', 2: 'python'}, { 3: 'andmeteadus', 4: 'masinõpe'}, {5: 'tehisintellekt', 6: 'närvivõrgud'}]

Loendur

See on sõnastiku alamklass, mida kasutatakse räsitavate objektide loendamiseks.

Kuidas see töötab?

java arvus olevate arvude summa silmusena
kogude impordist Loendur a = [1,1,1,1,2,3,3,4,3,3,4] c = Loendur (a) print (c) #väljundiks loendur = ({1: 4, 2: 1, 3: 4, 4: 2})

Lisaks toimingutele, mida saate teha sõnastikus, on loenduril veel 3 toimingut, mida saame teha.

  1. elemendi funktsioon - see tagastab loendi, mis sisaldab kõiki loenduri elemente.
  2. Most_common () - tagastab sorditud loendi koos loenduri kõigi elementide arvuga.
  3. Lahuta () - see võtab argumendina korduva objekti ja lahutab loenduri elementide arvu.

OrderedDict

See on sõnastiku alaklass, mis mäletab kirjete lisamise järjekorda. Põhimõtteliselt, isegi kui muudate võtme väärtust, ei muudeta positsiooni sõnastikku sisestamise järjekorra tõttu.

Kuidas see töötab?

kogudest imporditud OrderedDict od = OrderedDict () od [1] = 'e' od [2] = 'd' od [3] = 'u' od [4] = 'r' od [5] = 'e' od [6] = 'k' alates [7] = 'a' print (from) # väljund järjestatakseDict [(1, 'e'), (2, 'd'), (3, 'u'), (4, 'r'), (5, 'e'), (6, 'k'), (7, 'a')]

Pole tähtis, milline väärtus sõnastikku lisatakse, OrderedDict mäletab sisestamise järjekorda ja saab vastavalt väljundi. Isegi kui muudame võtme väärtust. Ütleme nii, et kui muudame võtme väärtuse 4 väärtuseks 8, ei muutu järjestus väljundis.

defaultdict

See on sõnastiku alaklass, mis kutsub puuduvate väärtuste edastamiseks tehase funktsiooni. Üldiselt ei viska see vigu, kui puuduv võtmeväärtus kutsutakse sõnastikku.

Kuidas see töötab?

kogudest impordi defaultdict d = defaultdict (int) # peame määrama ka tüübi. d [1] = 'edureka' d [2] = 'python' print (d [3]) # see annab väljundile võtmerea asemel 0.

UserDict

See klass toimib sõnaraamatu objektide ümbrisena. Vajadus selle klassi järele tulenes vajadusest vahetult dikteerida alaklassi. Selle klassiga töötamine muutub lihtsamaks, kuna aluseks olevast sõnastikust saab atribuut.

klassi kogud. UsserDict ([algandmed])

See klass simuleerib sõnastikku. Eksemplari sisu hoitakse tavalises sõnastikus, millele pääseb juurde klassi UserDict atribuudiga ‘data’. Algandmete viidet ei säilitata, et seda saaks kasutada muudel eesmärkidel.

Kasutajaloend

See klass toimib nagu loendobjektide ümbris. See on kasulik baasklass teiste loendite jaoks, näiteks klassid, mis võivad neist pärida ja olemasolevad meetodid tühistada või isegi vähem uusi lisada.

Vajadus selle klassi järele tulenes vajadusest alaklass otse nimekirjast. Selle klassiga töötamine muutub lihtsamaks, kuna aluseks olev loend muutub atribuudiks.

klassi kogud.UserList ([loend])

Klass simuleerib loendit. Eksemplari sisu hoitakse tavapärases loendis. Loendi alamklassidele tuginetakse konstruktori pakkumisel, mida saab kutsuda kas ühe või ühe vaidluseta.

java casting topelt int

Selles ajaveebis oleme õppinud Pythonis kogumismooduliga kaasnevate spetsiaalsete andmestruktuuride kohta. Optimeerimine toob kaasa parema jõudluse ja paremad tulemused. Sama kehtib ka meie enda karjääri ja oskuste kohta. Kui soovite oma õppimist alustada ja optimeerida programmeerimise tajumist, registreeruge edureka's ja vabastage lõputud võimalused pythoniga.

Kas teil on küsimusi? mainige neid kommentaarides ja võtame teiega ühendust niipea kui võimalik.