Python podporuje mnoho iterovateľných objektov: zoznamy, n-tice a reťazce sú len niektoré. Cyklus for Pythonu je dostatočne flexibilný na to, aby s týmito objektmi ľahko manipuloval. Predovšetkým vás to ušetrí od toho, aby ste sami riešili číselný index každého záznamu.
Niekedy však budete chcieť pracovať s indexom, napríklad spočítať alebo filtrovať položky v kolekcii. Zistite, ako môžete použiť funkciu enumerate Pythonu na iteráciu sekvencie a zároveň sledovať index aj prvok.
Iterácia bez enumerate()
Zvážte nasledujúci zoznam Pythonu.
my_fruits = ["jablká", "hrušky", "banány"]
Predpokladajme, že chcete sledovať počet každého prvku v zozname. Mohol by si použite cyklus for s rozsah() fungovať takto.
počítať = 0
pre ovocie v rozsah (len (moje_ovocie)):
vytlačiť (count, my_fruits[count])
počítať += 1
Aj keď to funguje, má to niekoľko nedostatkov:
- Musíte sledovať počet mimo slučky.
- V každej iterácii musíte zvýšiť počet.
- Musíte vypočítať dĺžku slučky.
- rozsah (len()) funguje iba s počítateľnými, indexovateľnými objektmi.
Existuje lepšie riešenie: funkcia enumerate().
Ako enumerate() funguje v Pythone
Python enumerate() funkcia vezme zhromaždenie údajov a vráti objekt enumerate. Objekt enumerate obsahuje počítadlo ako kľúč pre každú položku, ktorú objekt obsahuje. The enumerate() funkcia to robí tak, že každej položke priradí počet. Tento počet zodpovedá počtu iterácií, ktoré funkcia vykonala, aby dosiahla danú hodnotu.
Toto počítadlo uľahčuje prístup k položkám v zbierke alebo dokonca zmutuje zbierku, ak je to možné.
S enumerate(), nemusíte sledovať dĺžku cyklu ani počet iterácií. Môžete sa tiež vyhnúť explicitnému prístupu k hodnote pomocou operátora indexu, napr ovocie [počet]. Funkcia enumerate automaticky zvládne všetky tieto funkcie.
Syntax Pythonu enumerate()
Nižšie je uvedená všeobecná syntax pre funkciu enumerate().
enumerate (opakovateľné, štart=0)
enumerate() má dva argumenty:
- iterovateľné: zbierka údajov alebo sekvencia, ktorú môže Python iterovať. napr. zoznam alebo n-tica.
- štart: index, od ktorého by mala funkcia enumerate začať počítať.
Ako sa implementuje enumerate()
Aby ste pochopili ako enumerate() funguje, pozrime sa, ako sa v skutočnosti implementuje.
defvyčísliť(sekvencia, začiatok =0):
n = začiatok
pre elem v poradie:
výnos n, prvok
n += 1
Táto funkcia, ktorú nájdete v Python enumerate dokumentácia, vezme sekvenciu a argument štart, ktorý je štandardne nastavený na 0.
Funkcia potom inicializuje premennú n na počiatočnú premennú. To sleduje počet iterácií.
V slučke for, ktorá nasleduje pre každý prvok v sekvencii,
- výnos pozastaví vykonávanie cyklu.
- Tiež vráti aktuálny počet (n) a hodnotu (elem).
- Keď sa slučka obnoví, zvýši sa n.
Návratová hodnota je objektom párov kľúč – hodnota.
Ak by ste zavolali na enumerate() a odovzdajte jej zoznam ovocia, toto by bola výstupná hodnota.
my_fruits = ["jablká", "hrušky", "banány"]
enumerate_object = enumerate (moje_ovocie)
vytlačiť (zoznam (enumerate_object))
# výstup - [(0, 'jablká'), (1, 'hrušky'), (2, 'banány')]
Vymenujte s iným počiatočným indexom
Vo vyššie uvedenom príklade sme nešpecifikovali počiatočný index. Príklad nižšie ukazuje, ako môžete nastaviť počiatočný index na číslo podľa vlastného výberu.
Ak chcete začať o 10, postupujte takto.
enumerate_object = enumerate (moje_ovocie, 10)
vytlačiť (zoznam (enumerate_object))
# výstup - [(10, 'jablká'), (11, 'hrušky'), (12, 'banány')]
Python enumerate() Príklady
Tu je niekoľko príkladov, ktoré ukazujú, ako môžete použiť enumerate() v Pythone.
Vypočítajte reťazec Python
V tomto príklade použijete enumerate na získanie písmena na indexe 5:
my_string = "makeuseof"
pre počet, hodnota v enumerate (my_string):
ak počítať == 5:
vytlačiť (hodnota)
# výstup - s
Vymenujte Python Tuple
Môžete tiež použiť enumerate() iterovať cez a Pythonská n-tice. V tomto príklade program vytlačí hlavičku v prvej iterácii pred zobrazením položiek.
my_fruits_tuple = ("jablká", "hrušky", "banány")
pre index, hodnota v enumerate (my_fruits_tuple):
ak (index == 0):
vytlačiť("Ovocie:")vytlačiť (hodnota)
/*
Ovocie:
jablká
hrušky
banány
*/
Vymenujte zoznam Python
V nižšie uvedenom príklade používate enumerate na zníženie všetkých čísel v zozname nad 10 o 2.
môj_zoznam_čísel = [10, 17, 15, 6]
pre index, hodnota v enumerate (my_number_list):
ak (hodnota > 10):
môj_zoznam_čísel[index] -= 2vytlačiť (moj_zoznam_čísel)
# výstup - [10, 15, 13, 6]
Použite enumerate na počítanie iterables
Python zahŕňa enumerate() ako vstavaná funkcia. Môžete ho použiť na iteráciu a počítanie položiek v iterovateľnej kolekcii, ako je zoznam, n-tica alebo reťazec. Môže vám to pomôcť sledovať skutočný index každého prvku, ale môžete tiež zadať svoj vlastný počiatočný index. Použite ho ako alternatívu k rozsah() funkciu, ak pracujete s objektmi, ktoré nie sú počítateľné a indexovateľné objekty.