Na vytvorenie slučiek s počítadlami použite v Pythone funkciu Enumerate

Use Enumerate Function Python Create Loops With Counters



Tento článok vysvetlí použitie funkcie enumerate dostupnej v štandardnej knižnici modulov Pythonu. Funkcia Enumerate vám umožňuje priradiť index alebo počet prvkov k akémukoľvek iterovateľnému objektu. Potom na nich môžete implementovať ďalšiu logiku, pretože budete mať prístup k obidvom hodnotám a k nim priradenému počtu.

Syntax a základný príklad

Ak ste slučku for použili v iných programovacích jazykoch, najmä v jazyku C a ďalších jazykoch so syntaxou štýlu C, možno ste v slučke zadali počiatočný index. Pre informáciu uvádzame, ako vyzerá slučka for v jazyku C a ďalších jazykoch s podobnou syntaxou:







pre (inti= 0;i< 10;i++)

{

printf ('%d n',i);

}

Príkaz loop inicializuje premennú s hodnotou nula, skontroluje, či je menší ako prah, a po vyhodnotení logiky vo vnútri bloku slučky ho zvýši o jeden počet (ak je splnená podmienka zastavenia). Týmto spôsobom môžete použiť index a priradiť ho akýmkoľvek objektom, na ktoré sa odkazuje v bloku vašej slučky. Na porovnanie, tu je príklad, ako vyzerá slučka for s rovnakým výsledkom v Pythone:



preiv rozsah(0, 10):

vytlačiť (i)

Funkcia rozsahu v Pythone vám umožňuje zadať postupnosť číselných rozsahov, ktorá má predvolený krok 1. Hodnotu kroku môžete zmeniť zadaním tretieho argumentu. Druhý argument vo funkcii rozsahu sa používa na nastavenie prahu pre stav zastavenia. Obe ukážky kódu produkujú nasledujúci výstup:



0

1

2

3

4

5

6

7

8

9

Tieto slučky fungujú dobre, ak chcete iba vygenerovať nejakú číselnú postupnosť a priradiť ju k nejakej logike vo vnútri príkazu loop. Na priradenie nejakého druhu sledovateľného počtu však možno budete musieť použiť inú vnorenú slučku alebo použiť funkciu yield na akomkoľvek iterovateľnom type. Metóda enumerate uľahčuje priradenie indexov iterabilám v jednom príkaze, čím sa eliminuje potreba spustenia viacerých vnorených slučiek. Pozrite sa na túto ukážku kódu:





čísla= ['nula', 'jeden', 'dva', 'tri', „štyri“, 'päť']

enumerated_numbers= uvedené(čísla)

preindex,položkavenumerated_numbers:

vytlačiť (index,položka)

Prvý príkaz definuje novú premennú nazývanú čísla a priradí jej iterovateľný (typ zoznamu). Druhé tvrdenie ukazuje použitie funkcie enumerate, ak k nej ako povinný argument zadáte iterovateľnú funkciu. Tretí príkaz prevádza premennú enumerated_numbers na objekt typu zoznam. V predvolenom nastavení funkcia enumerate generuje objekt typu enumerate a nie iterovateľný typ, takže ho musíte previesť. Po spustení vyššie uvedenej ukážky kódu by ste mali získať nasledujúci výstup:

[(0, 'nula'), (1, 'jeden'), (2, 'dva'), (3, 'tri'), (4, 'four'), ​​(5, 'Five')]

Funkcia enumerate priradí počet každému prvku v iterovateľnom type a vytvorí n -tice s párovými hodnotami. Štandardne sa počet začína od nuly.



Teraz, keď ste každému prvku priradili číslo v iterovateľnom type, môžete sa nad ním ľahko pohybovať bez písania vnorených príkazov:

čísla= ['nula', 'jeden', 'dva', 'tri', „štyri“, 'päť']

enumerated_numbers= uvedené(čísla)

preindex,položkavenumerated_numbers:

vytlačiť (index,položka)

Vyššie uvedená vzorka kódu poskytne nasledujúci výstup:

0 nula

1 jeden

2 dva

3 tri

4 štyri

5 päť

Kód môžete skrátiť pomocou vloženej funkcie funkcie vloženej do pamäte, ako je to znázornené na obrázku nižšie:

čísla= ['nula', 'jeden', 'dva', 'tri', „štyri“, 'päť']

preindex,položkav uvedené(čísla):

vytlačiť (index,položka)

Použitie Enumerate s iným počiatočným indexom

Funkcia enumerate má voliteľný argument, kde môžete zadať počiatočný index. Štandardne je nula, ale môžete to zmeniť pomocou štartovacieho argumentu:

čísla= ['jeden', 'dva', 'tri', „štyri“, 'päť']

preindex,položkav uvedené(čísla,začať=1):

vytlačiť (index,položka)

V druhom výroku sa na zmenu počiatočného bodu používa argument start = 1. Po spustení ukážky kódu uvedenej vyššie by ste mali získať nasledujúci výstup:

1 jeden

2 dva

3 tri

4 štyri

5 päť

Priradenie indexu krokmi

V prvej časti tohto článku je zobrazená syntax pre cyklus for v jazyku C, kde môžete definovať kroky medzi každým nasledujúcim počtom alebo indexom. Funkcia enumerate v Pythone nemá žiadny taký argument k dispozícii, takže nemôžete určiť krok medzi počtami. Skutočne môžete napísať svoju vlastnú logiku na implementáciu krokov vnútri enumerovaného bloku slučiek. Existuje však spôsob, ako implementovať vlastné kroky napísaním minimálneho kódu. Nasledujúci príklad ukazuje implementáciu krokov pomocou funkcií zip a range:

čísla= ['nula', 'dva', „štyri“, 'šesť']

preindex,položkav PSČ(rozsah(0, 7, 2),čísla):

vytlačiť (index,položka)

Funkcia zip vám umožňuje vytvárať páry vyberaním prvkov s rovnakým indexom z dvoch alebo viacerých iterácií. Funkcia zip tu teda vyberie prvok z iterovateľnej funkcie vrátenej z rozsahu (0, 7, 2) a ďalší prvok zo zoznamu čísel a potom ich oba spáruje do n -tice. Konečným výsledkom je identická implementácia ako funkcia enumerate, ale s vlastnými krokmi uvedenými ako tretí argument vo funkcii range (0, 7, 2) (v tomto prípade 2). Po spustení ukážky kódu uvedenej vyššie by ste mali získať nasledujúci výstup:

0 nula

2 dva

4 štyri

6 šesť

Záver

Funkcia enumerate v Pythone vám umožňuje písať stručný kód priradením číselnej postupnosti k prvkom v iterovateľnom objekte. To je skutočne užitočné, ak chcete sledovať register položiek v iterovateľnom type. Ak chcete vymenovať iterovateľné typy pomocou vlastných krokov, použite funkciu zip vysvetlenú v poslednom príklade.