Použijte funkci Enumerate v Pythonu k vytváření smyček s čítači

Use Enumerate Function Python Create Loops With Counters



Tento článek vysvětlí použití funkce výčtu dostupné ve standardní knihovně modulů Pythonu. Funkce Enumerate vám umožňuje přiřadit index nebo počet prvkům v jakémkoli iterovatelném objektu. Poté na ně můžete implementovat další logiku, protože budete mít přístup k oběma hodnotám a k nim namapovaný počet.

Syntaxe a základní příklad

Pokud jste použili smyčku for v jiných programovacích jazycích, zejména v jazyce C a dalších jazycích se syntaxí stylu C, možná jste ve smyčce zadali počáteční index. Pro informaci zde je, jak vypadá smyčka for v jazyce C a dalších jazycích s podobnou syntaxí:







pro (int= 0;< 10;++)

{

printf ('%d n',);

}

Příkaz smyčky inicializuje proměnnou s hodnotou nula, zkontroluje, zda je menší než prahová hodnota, a po vyhodnocení logiky uvnitř bloku smyčky (pokud je splněna podmínka zastavení) ji zvýší o jeden počet. Tímto způsobem můžete použít index a přiřadit jej jakýmkoli objektům, na které odkazuje váš blok smyčky. Pro srovnání zde vypadá smyčka for se stejným výsledkem v Pythonu:



prov rozsah(0, 10):

tisk ()

Funkce range v Pythonu vám umožňuje určit posloupnost číselného rozsahu, která má výchozí krok 1. Hodnotu kroku můžete změnit zadáním třetího argumentu. Druhý argument ve funkci rozsahu slouží k nastavení prahu pro podmínku zastavení. Oba vzorky kódu produkují následující výstup:



0

1

2

3

4

5

6

7

8

9

Tyto smyčky fungují dobře, pokud chcete pouze vygenerovat nějakou číselnou sekvenci a spojit je s nějakou logikou uvnitř příkazu smyčky. Možná však budete muset použít jinou vnořenou smyčku nebo použít funkci yield na jakémkoli iterovatelném typu, abyste jim přiřadili nějaký druh sledovatelného počtu. Metoda enumerate usnadňuje přiřazování indexů k iterovatelům v jednom příkazu, čímž eliminuje potřebu spouštění více vnořených smyček. Podívejte se na tento ukázkový kód:





čísla= ['nula', 'jeden', 'dva', 'tři', 'čtyři', 'Pět']

enumerated_numbers= uvedena(čísla)

proindex,položkavenumerated_numbers:

tisk (index,položka)

První příkaz definuje novou proměnnou nazvanou čísla a přiřadí jí iterovatelný (typ seznamu). Druhé prohlášení ukazuje využití funkce výčtu, kde ji jako povinný argument zadáte iterovatelnou. Třetí příkaz převádí proměnnou enumerated_numbers na objekt typu seznamu. Ve výchozím nastavení funkce enumerate generuje objekt typu enumerate a ne iterovatelný typ, takže jej musíte převést. Po spuštění výše uvedeného ukázkového kódu byste měli získat následující výstup:

[(0, 'nula'), (1, 'jedna'), (2, 'dva'), (3, 'tři'), (4, 'čtyři'), (5, 'pět')]

Funkce enumerate přiřadí počet každému prvku v iterovatelném typu a vytvoří řazené kolekce členů se spárovanými hodnotami. Ve výchozím nastavení začíná počet od nuly.



Nyní, když jste každému prvku přiřadili číslo v iterovatelném typu, můžete jej snadno smyčkovat bez psaní vnořených příkazů:

čísla= ['nula', 'jeden', 'dva', 'tři', 'čtyři', 'Pět']

enumerated_numbers= uvedena(čísla)

proindex,položkavenumerated_numbers:

tisk (index,položka)

Ukázka kódu specifikovaná výše vytvoří následující výstup:

0 nula

1 jeden

2 dva

3 tři

4 čtyři

5 pět

Kód můžete zkrátit pomocí vložené funkce výčtu, jak ukazuje následující ukázka:

čísla= ['nula', 'jeden', 'dva', 'tři', 'čtyři', 'Pět']

proindex,položkav uvedena(čísla):

tisk (index,položka)

Použití Enumerate s odlišným počátečním indexem

Funkce výčet má volitelný argument, kde můžete zadat počáteční index. Ve výchozím nastavení je nula, ale můžete jej změnit pomocí argumentu start:

čísla= ['jeden', 'dva', 'tři', 'čtyři', 'Pět']

proindex,položkav uvedena(čísla,Start=1):

tisk (index,položka)

Ve druhém příkazu se pro změnu počátečního bodu používá argument start = 1. Po spuštění výše uvedeného ukázkového kódu byste měli získat následující výstup:

1 jeden

2 dva

3 tři

4 čtyři

5 pět

Přiřazení indexu pomocí kroků

V první části tohoto článku je ukázána syntaxe for for loop v jazyce C, kde můžete definovat kroky mezi každým následujícím počtem nebo indexem. Funkce výčet v Pythonu nemá žádný takový argument k dispozici, takže nemůžete určit krok mezi počty. Opravdu můžete napsat svou vlastní logiku pro implementaci kroků uvnitř výčtu pro smyčkový blok. Existuje však způsob, jak implementovat vlastní kroky napsáním minimálního kódu. Následující příklad ukazuje implementaci kroků pomocí funkcí zip a range:

čísla= ['nula', 'dva', 'čtyři', 'šest']

proindex,položkav zip(rozsah(0, 7, 2),čísla):

tisk (index,položka)

Funkce zip vám umožňuje vytvářet páry vyzvednutím prvků se stejným indexem ze dvou nebo více iterabilních položek. Funkce zip zde tedy vyzvedne prvek z iterovatelné funkce vrácené z rozsahu (0, 7, 2) a další prvek ze seznamu čísel a poté je oba spáruje do tuple. Konečným výsledkem je identická implementace funkce enumerate, ale s vlastními kroky zadanými jako třetí argument ve funkci range (0, 7, 2) (v tomto případě 2). Po spuštění výše uvedeného ukázkového kódu byste měli získat následující výstup:

0 nula

2 dva

4 čtyři

6 šest

Závěr

Funkce enumerate v Pythonu vám umožňuje psát stručný kód přiřazením číselné sekvence prvkům v iterovatelném objektu. To je opravdu užitečné, pokud chcete sledovat rejstřík položek uvnitř iterovatelného typu. Pokud chcete vytvořit výčet iterovatelných typů pomocí vlastních kroků, použijte funkci zip vysvětlenou v posledním příkladu.