Piton

Koristite funkciju nabrajanja u Pythonu za stvaranje petlji s brojačima

Koristite funkciju nabrajanja u Pythonu za stvaranje petlji s brojačima

Ovaj će članak objasniti upotrebu funkcije “enumerate” koja je dostupna u Pythonovoj knjižnici standardnih modula. Funkcija enumerate omogućuje vam dodijeliti "indeks" ili "count" elementima u bilo kojem iterabilnom objektu. Tada na njima možete implementirati daljnju logiku jer ćete imati pristup objema vrijednostima i broju koji je na nju mapiran.

Sintaksa i osnovni primjer

Ako ste koristili petlju "for" u drugim programskim jezicima, posebno jeziku "C" i ostalim jezicima koji imaju sintaksu stila "C", možda ste odredili početni indeks u petlji. Za referencu, evo kako izgleda petlja "for" u "C" i drugim jezicima koji imaju sličnu sintaksu:

za (int i = 0; i < 10; i++)

printf ("% d \ n", i);

Izjava petlje inicijalizira varijablu koja ima vrijednost nula, provjerava je li manja od praga i povećava je za jedan broj nakon procjene logike unutar bloka petlje (ako je zadovoljen uvjet zaustavljanja). Na taj način možete koristiti indeks i dodijeliti ga bilo kojim objektima na koje se poziva vaš blok petlje. Za usporedbu, evo kako izgleda for petlja s istim rezultatom u Pythonu:

za i u rasponu (0, 10):
ispis (i)

Funkcija "raspon" u Pythonu omogućuje vam određivanje niza raspona brojeva koji ima zadani korak 1. Vrijednost koraka možete promijeniti davanjem trećeg argumenta. Drugi argument u funkciji "raspon" koristi se za postavljanje praga za uvjet zaustavljanja. Oba uzorka koda daju sljedeći izlaz:

0
1
2
3
4
5
6
7
8
9

Te petlje dobro funkcioniraju ako samo želite generirati neki niz brojeva i povezati ih s nekom logikom unutar naredbe petlje. Međutim, možda ćete morati upotrijebiti drugu ugniježđenu petlju ili upotrijebiti funkciju "yield" na bilo kojem ponovljivom tipu kako biste im dodijelili neku vrstu broja koji se može pratiti. Metoda "enumerate" olakšava dodjeljivanje indeksa iterabilima u jednom izrazu, čime eliminira potrebu za izvođenjem više ugniježđenih petlji. Pogledajte ovaj uzorak koda:

brojevi = ["nula", "jedan", "dva", "tri", "četiri", "pet"]
enumerated_numbers = nabrojati (brojevi)
za indeks, stavka u enumerated_numbers:
ispis (indeks, stavka)

Prva izjava definira novu varijablu koja se naziva "brojevi" i dodjeljuje joj iterabil (tip popisa). Druga izjava prikazuje upotrebu funkcije “enumerate” gdje joj dajete iterabil kao obvezni argument. Treći izraz pretvara varijablu "enumerated_numbers" u objekt vrste popisa. Prema zadanim postavkama funkcija "enumerate" generira objekt tipa "enumerate", a ne iterabilni tip, pa ga morate pretvoriti. Nakon pokretanja gore spomenutog uzorka koda, trebali biste dobiti sljedeći izlaz:

[(0, 'nula'), (1, 'jedan'), (2, 'dva'), (3, 'tri'), (4, 'četiri'), (5, 'pet')]

Funkcija "enumerate" dodjeljuje brojanje svakom elementu u iterabilnom tipu i stvara korice s uparenim vrijednostima. Prema zadanim postavkama, brojanje započinje od nule.

Sada kada ste svakom elementu dodijelili broj u iterabilnom tipu, možete ga lako prebaciti bez pisanja ugniježđenih izraza:

brojevi = ["nula", "jedan", "dva", "tri", "četiri", "pet"]
enumerated_numbers = enumerate (brojevi)
za indeks, stavka u enumerated_numbers:
ispis (indeks, stavka)

Gore navedeni uzorak koda rezultirat će sljedećim rezultatima:

0 nula
1 jedan
2 dva
3 tri
4 četiri
5 pet

Kôd možete skratiti korištenjem funkcije "nabroji", kako je prikazano u donjem primjeru:

brojevi = ["nula", "jedan", "dva", "tri", "četiri", "pet"]
za indeks, stavka u nabrajanju (brojevi):
ispis (indeks, stavka)

Korištenje Enumerate s različitim početnim indeksom

Funkcija "enumerate" uzima neobavezni argument gdje možete odrediti početni indeks. Po defaultu je nula, ali možete ga promijeniti pomoću argumenta „start“:

brojevi = ["jedan", "dva", "tri", "četiri", "pet"]
za indeks, stavka u nabrajanju (brojevi, početak = 1):
ispis (indeks, stavka)

U drugoj izjavi, argument "start = 1" koristi se za promjenu početne točke. Nakon pokretanja gore navedenog uzorka koda, trebali biste dobiti sljedeći izlaz:

1 jedan
2 dva
3 tri
4 četiri
5 pet

Dodjeljivanje indeksa s koracima

U prvom odjeljku ovog članka prikazana je sintaksa petlje "for" na jeziku "C" gdje možete definirati korake između svakog sljedećeg brojanja ili indeksa. Funkcija "enumerate" u Pythonu nema dostupan takav argument, tako da ne možete odrediti korak između brojanja. Doista možete napisati vlastitu logiku za implementaciju koraka unutar nabrojanog bloka petlje "for". Međutim, postoji način za implementaciju prilagođenih koraka pisanjem minimalnog koda. Sljedeći primjer prikazuje implementaciju koraka pomoću funkcija "zip" i "range":

brojevi = ["nula", "dva", "četiri", "šest"]
za indeks, stavka u zip-u (raspon (0, 7, 2), brojevi):
ispis (indeks, stavka)

Funkcija "zip" omogućuje vam stvaranje parova uzimanjem elemenata s istim indeksom iz dva ili više ponovljivih elemenata. Dakle, funkcija "zip" ovdje preuzima element iz iterabilnosti vraćene iz funkcije "range (0, 7, 2)" i drugi element s popisa "brojevi", a zatim ih oba spaja u skup. Krajnji rezultat je identična implementacija funkcije “enumerate”, ali s prilagođenim koracima navedenim kao treći argument u funkciji “range (0, 7, 2)” (2 u ovom slučaju). Nakon pokretanja gore navedenog uzorka koda, trebali biste dobiti sljedeći izlaz:

0 nula
2 dva
4 četiri
6 šest

Zaključak

Funkcija "enumerate" u Pythonu omogućuje vam pisanje sažetog koda dodjeljivanjem brojevnog niza elementima u iterabilnom objektu. Ovo je stvarno korisno ako želite pratiti indeks predmeta unutar iterabilne vrste. Ako želite "nabrojati" iterabilne tipove prilagođenim koracima, upotrijebite funkciju "zip" objašnjenu u posljednjem primjeru.

SuperTuxKart za Linux
SuperTuxKart sjajan je naslov osmišljen kako bi vam besplatno pružio iskustvo Mario Kart na vašem Linux sustavu. Prilično je izazovno i zabavno igrati...
Vodič za bitku za Wesnoth
Bitka za Wesnoth jedna je od najpopularnijih strateških igara otvorenog koda koje trenutno možete igrati. Ne samo da se ova igra razvija već jako dugo...
0 A.D. Vodič
Od mnogih strateških igara tamo, 0 A.D. uspijeva se istaknuti kao sveobuhvatan naslov i vrlo duboka, taktička igra unatoč tome što je otvoren izvor. R...