Ez a cikk elmagyarázza a Python szabványos modulkönyvtárában elérhető „felsorolás” funkció használatát. Az Enumerate függvény lehetővé teszi „index” vagy „count” hozzárendelését bármely iterálható objektum eleméhez. Ezután további logikát valósíthat meg rajtuk, mivel hozzáférhet mind az értékekhez, mind a hozzájuk rendelt számhoz.
Szintaxis és alapvető példa
Ha más programozási nyelvekben használt "for" ciklust, különösen a "C" nyelvet és más "C" stílusú szintaxissal rendelkező nyelveket, akkor lehet, hogy megadta a kezdő indexet a ciklusban. Hivatkozásként a következõképpen néz ki a „for” ciklus a „C” és más hasonló szintaxisú nyelveken:
mert (int i = 0; i < 10; i++)printf ("% d \ n", i);
A ciklus utasítás inicializálja a nulla értékű változót, ellenőrzi, hogy ez kisebb-e egy küszöbértéknél, és egy számmal növeli, miután kiértékelte a logikai blokk belsejében lévő logikát (ha a stop feltétel teljesül). Így indexet használhat, és hozzárendelheti a hurokblokkban hivatkozott objektumokhoz. Összehasonlításképpen, itt néz ki egy for for loop azonos eredménnyel a Pythonban:
i-re a (0, 10) tartományban:nyomtatás (i)
A „tartomány” függvény a Pythonban lehetővé teszi egy olyan számtartomány-sorozat megadását, amelynek alapértelmezett lépése 1. A lépésértéket megváltoztathatja egy harmadik argumentum megadásával. A „tartomány” függvény második argumentuma a leállítási feltétel küszöbének beállítására szolgál. Mindkét kódminta a következő kimenetet produkálja:
01
2
3
4
5
6
7
8
9
Ezek a ciklusok jól működnek, ha csak elő akar állítani egy számszekvenciát, és összekapcsolja őket a ciklus utasítás belsejében lévő logikával. Előfordulhat azonban, hogy egy másik beágyazott ciklust kell használnia, vagy bármilyen iterálható típusnál a „hozam” funkciót kell használnia valamilyen nyomon követhető számlálóhoz. Az „enumerate” módszer megkönnyíti az indexek hozzárendelését az iterable-hez egy utasításban, ezáltal kiküszöböli több beágyazott hurok futtatásának szükségességét. Nézze meg ezt a kódmintát:
számok [[nulla "," egy "," kettő "," három "," négy "," öt "]enumerated_numbers = felsorol (számok)
index esetén az elem a felsorolt számokban:
nyomtatás (index, cikk)
Az első utasítás meghatároz egy új „számok” nevű változót, és iterálást (listatípust) rendel hozzá. A második utasítás az „enumerate” függvény használatát mutatja, ahol kötelező iterációként iterálást ad meg hozzá. A harmadik utasítás az „enumerated_numbers” változót konvertálja listatípus objektummá. Alapértelmezés szerint az „enumerate” függvény egy „enumerate” típusú objektumot generál, nem pedig iterálható típust, ezért azt konvertálnia kell. A fent említett kódminta futtatása után a következő kimenetet kell kapnia:
[(0, 'nulla'), (1, 'egy'), (2, 'kettő'), (3, 'három'), (4, 'négy'), (5, 'öt')]Az „enumerate” függvény számolást rendel minden iterálható típusú elemhez, és párosított értékeket hoz létre. Alapértelmezés szerint a számlálás nullától kezdődik.
Most, hogy minden iterálható elemhez rendelt egy számot, könnyedén áthidalhatja azt anélkül, hogy beágyazott utasításokat írna:
számok [[nulla "," egy "," kettő "," három "," négy "," öt "]enumerated_numbers = felsorol (számok)
index esetén az elem a felsorolt számokban:
nyomtatás (index, cikk)
A fent megadott kódminta a következő kimenetet hozza létre:
0 nulla1 egy
2 kettő
3 három
4 négy
5 öt
A kódot rövidebbé teheti a soron belüli „felsorolás” funkció használatával, amint az az alábbi mintában látható:
számok [[nulla "," egy "," kettő "," három "," négy "," öt "]index, tétel felsorolása (számok):
nyomtatás (index, cikk)
Számlálás használata egy másik kezdő indexel
Az „enumerate” függvény egy opcionális argumentumot tartalmaz, ahol megadhat egy kezdő indexet. Alapértelmezés szerint nulla, de a „start” argumentummal módosíthatja:
számok [[egy "," kettő "," három "," négy "," öt "]index, tétel felsorolása (számok, kezdet = 1):
nyomtatás (index, cikk)
A második utasításban a „start = 1” argumentumot használjuk a kezdőpont megváltoztatására. A fent megadott kódminta futtatása után a következő kimenetet kell kapnia:
1 egy2 kettő
3 három
4 négy
5 öt
Index hozzárendelése lépésekkel
A cikk első szakaszában a „for” ciklus szintaxisa jelenik meg a „C” nyelven, ahol meghatározhatja az egyes következő számlálások vagy indexek közötti lépéseket. A Python „felsorolás” függvényében nem áll rendelkezésre ilyen argumentum, így nem adhat meg egy lépést a számlálások között. Valóban megírhatja saját logikáját a lépések végrehajtásához a felsorolt „for” hurokblokkon belül. Van azonban mód egyéni lépések végrehajtására minimális kód beírásával. Az alábbi példa a lépések végrehajtását mutatja be a „zip” és a „range” függvényekkel:
számok [[nulla "," kettő "," négy "," hat "]indexhez, cikk zip-ben (tartomány (0, 7, 2), számok):
nyomtatás (index, cikk)
A „zip” funkció lehetővé teszi párok létrehozását úgy, hogy két vagy több ismétlődő elemből azonos indexű elemeket vesz fel. Tehát a „zip” függvény itt felvesz egy elemet a „tartomány (0, 7, 2)” függvényből visszaadott iterálhatóból és egy másik elemet a „számok” listából, majd párosítja őket kettőbe. A végeredmény megegyezik az „enumerate” függvény megvalósításával, de a „range (0, 7, 2)” (ebben az esetben 2) függvény harmadik argumentumaként megadott egyéni lépésekkel. A fent megadott kódminta futtatása után a következő kimenetet kell kapnia:
0 nulla2 kettő
4 négy
6 hat
Következtetés
A Python „felsorolás” funkciója lehetővé teszi, hogy tömör kódot írjon egy számozatsor hozzárendelésével egy iterálható objektum elemeihez. Ez nagyon hasznos, ha nyomon akarja követni az iterálható típuson belüli elemek indexét. Ha egyedi lépésekkel szeretné felsorolni az iterálható típusokat, használja az utolsó példában ismertetett „zip” funkciót.