Python atbalsta daudzus iterējamus objektus: saraksti, korteži un virknes ir tikai daži. Python's for cilpa ir pietiekami elastīga, lai viegli apstrādātu šos objektus. Jo īpaši tas ietaupa jūs no katra ieraksta ciparu indeksa darbības pašam.
Bet dažreiz jūs vēlaties strādāt ar indeksu, piemēram, skaitīt vai filtrēt kolekcijas vienumus. Uzziniet, kā varat izmantot Python uzskaitīšanas funkciju, lai atkārtotu secību, vienlaikus sekojot līdzi gan indeksam, gan elementam.
Atkārtošana bez uzskaitījuma()
Apsveriet šo Python sarakstu.
my_fruits = ["āboli", "bumbieri", "banāni"]
Pieņemsim, ka vēlaties izsekot katra elementa skaitam sarakstā. Tu varētu izmantojiet for cilpu ar diapazons () funkcija kā šī.
skaits = 0
priekš augļus iekšā diapazons (len (my_fruits)):
drukāt (count, my_fruits[count])
skaitīt += 1
Lai gan tas darbojas, tam ir daži trūkumi:
- Jums ir jāseko skaitam ārpus cilpas.
- Jums ir jāpalielina skaits katrā iterācijā.
- Jums jāaprēķina cilpas garums.
- diapazons (len()) darbojas tikai ar saskaitāmiem, indeksējamiem objektiem.
Ir labāks risinājums: funkcija enumerate () .
Kā enumerate() darbojas programmā Python
Python uzskaitīt () funkcija ņem datu vākšanu un atgriež uzskaitāmo objektu. Uzskaites objektā ir skaitītājs kā atslēga katram objektam. The uzskaitīt () funkcija to dara, piešķirot katram vienumam skaitu. Šis skaits atbilst iterāciju skaitam, ko funkcija ir pabeigusi, lai sasniegtu šo vērtību.
Šis skaitītājs ļauj vieglāk piekļūt kolekcijas vienumiem vai pat mainīt kolekciju, ja iespējams.
Ar uzskaitīt (), jums nav jāseko līdzi cilpas garumam vai iterāciju skaitam. Varat arī izvairīties no nepārprotamas piekļuves vērtībai, izmantojot indeksa operatoru, piemēram augļi [skaits]. Uzskaitīšanas funkcija automātiski apstrādā visas šīs funkcijas.
Python sintakse enumerate()
Tālāk ir sniegta funkcijas enumerate() vispārīgā sintakse.
uzskaitīt (iterable, start=0)
enumerate() izmanto divus argumentus:
- iterējams: datu kolekcija vai secība, kuru Python var atkārtot. Piem. saraksts vai kopa.
- sākums: indekss, no kura jāuzskaita funkcijai jāsāk skaitīt.
Kā tiek īstenots enumerate()
Lai saprastu, kā uzskaitīt () darbojas, redzēsim, kā tas faktiski tiek īstenots.
defuzskaitīt(secība, sākums =0):
n = sākums
priekš elem iekšā secība:
raža n, element
n += 1
Šī funkcija, ko varat atrast Python uzskaita dokumentāciju, ņem secību un sākuma argumentu, kas pēc noklusējuma ir 0.
Pēc tam funkcija inicializē n mainīgo uz sākuma mainīgo. Tas seko iterāciju skaitam.
For cilpā, kas seko katram secības elementam,
- raža aptur cilpas izpildi.
- Tas arī atgriež pašreizējo skaitu (n) un vērtību (elem).
- Kad cilpa tiek atsākta, tas palielinās par n.
Atgriešanas vērtība ir atslēgu un vērtību pāru objekts.
Ja jūs piezvanītu uz uzskaitīt () funkciju un nododiet tai augļu sarakstu, tā būtu izvades vērtība.
my_fruits = ["āboli", "bumbieri", "banāni"]
enumerate_object = uzskaitīt (mani_augļi)
drukāt (saraksts (uzskaitīt_objektu))
# izvade — [(0, 'āboli'), (1, 'bumbieri'), (2, 'banāni')]
Uzskaitiet ar citu sākuma indeksu
Iepriekš minētajā piemērā mēs nenorādījām sākuma indeksu. Tālāk sniegtajā piemērā ir parādīts, kā sākuma indeksu var iestatīt uz jūsu izvēlētu numuru.
Lai sāktu pulksten 10, rīkojieties šādi.
enumerate_object = uzskaitīt (mani_augļi, 10)
drukāt (saraksts (uzskaitīt_objektu))
# izeja — [(10, 'āboli'), (11, 'bumbieri'), (12, 'banāni')]
Python enumerate() piemēri
Šeit ir daži piemēri, kas parāda, kā jūs varat izmantot uzskaitīt () programmā Python.
Uzskaitiet Python virkni
Šajā piemērā jūs izmantosit enumerate, lai izgūtu burtu rādītājā 5:
my_string = "izdarīt"
priekš skaits, vērtība iekšā uzskaitīt (mana_virkne):
ja skaitīt == 5:
drukāt (vērtība)
# izeja - s
Uzskaitiet Python kopu
Varat arī izmantot uzskaitīt () atkārtot a Python kortežs. Šajā piemērā programma izdrukā galveni pirmajā iterācijā pirms vienumu parādīšanas.
my_fruits_tuple = ("āboli", "bumbieri", "banāni")
priekš indekss, vērtība iekšā uzskaitīt (my_fruits_tuple):
ja (indekss == 0):
drukāt ("Augļi:")drukāt (vērtība)
/*
Augļi:
āboli
bumbieri
banāni
*/
Uzskaitiet Python sarakstu
Tālāk esošajā piemērā jūs izmantojat enumerate, lai samazinātu visus skaitļus sarakstā virs 10 par 2.
my_number_list = [10, 17, 15, 6]
priekš indekss, vērtība iekšā uzskaitīt (my_number_list):
ja (vērtība > 10):
mans_numuru_saraksts[indekss] -= 2drukāt (mans_numuru_saraksts)
# izeja — [10, 15, 13, 6]
Izmantojiet enumerate, lai saskaitītu savus atkārtojumus
Python ietver uzskaitīt () kā iebūvēta funkcija. Varat to izmantot, lai iterētu un saskaitītu vienumus iterējamā kolekcijā, piemēram, sarakstā, korejā vai virknē. Tas var palīdzēt izsekot katra elementa patiesajam indeksam, taču varat arī norādīt savu sākuma indeksu. Izmantojiet to kā alternatīvu diapazons() funkciju, ja strādājat ar objektiem, kas nav saskaitāmi un indeksējami objekti.