Python palaiko daug kartojamų objektų: sąrašai, eilutės ir eilutės yra tik keletas. Python's for ciklas yra pakankamai lankstus, kad galėtų lengvai valdyti šiuos objektus. Visų pirma, tai apsaugo jus nuo patiems susitvarkyti su kiekvieno įrašo skaitine indeksu.

Tačiau kartais norėsite dirbti su indeksu, pavyzdžiui, skaičiuoti arba filtruoti kolekcijos elementus. Sužinokite, kaip galite naudoti Python numerate funkciją, kad kartotumėte seką, stebint ir indeksą, ir elementą.

Kartojimas be numerate ()

Apsvarstykite šį Python sąrašą.

my_fruits = ["obuoliai", "kriaušės", "bananai"]

Tarkime, kad norite sekti kiekvieno sąrašo elemento skaičių. Tu galėtum naudokite for kilpą su diapazonas() funkcija kaip ši.

skaičiuoti = 0

dėl vaisių in diapazonas (len (mano_vaisiai)):
spausdinti (skaičiuoti, mano_vaisiai[skaičius])
skaičiuoti += 1

Nors tai veikia, ji turi keletą trūkumų:

  • Turite sekti skaičių už kilpos ribų.
  • Kiekvienoje iteracijoje turite padidinti skaičių.
  • Turite apskaičiuoti kilpos ilgį.
  • diapazonas (len()) veikia tik su skaičiuojamais, indeksuojamais objektais.
instagram viewer

Yra geresnis sprendimas: funkcija enumerate().

Kaip Python veikia enumerate()

Python išvardinti () funkcija renka duomenis ir grąžina objektą surašyti. Išvardijimo objekte yra skaitiklis kaip kiekvieno objekto elemento raktas. The išvardinti () funkcija tai daro priskirdama kiekvienam elementui skaičių. Šis skaičius atitinka iteracijų, kurias funkcija atliko, kad pasiektų tą vertę, skaičių.

Šis skaitiklis leidžia lengviau pasiekti kolekcijoje esančius elementus arba, jei įmanoma, pakeisti kolekciją.

Su išvardinti (), jums nereikia sekti ciklo ilgio ar iteracijų skaičiaus. Taip pat galite išvengti aiškios prieigos prie vertės naudodami indekso operatorių, pvz., vaisiai [skaičiuoti]. Surašymo funkcija automatiškai apdoroja visas šias funkcijas.

Python sintaksė enumerate()

Žemiau pateikiama bendroji funkcijos enumerate() sintaksė.

išvardinti (iterable, start=0)

enumerate() turi du argumentus:

  1. kartojamas: duomenų rinkinys arba seka, kurią Python gali kartoti. Pvz. sąrašą arba eilutę.
  2. pradžia: indeksas, nuo kurio skaičiuoti funkcija turėtų pradėti skaičiuoti.

Kaip įgyvendinamas enumerate()

Norėdami suprasti, kaip išvardinti () veikia, pažiūrėkime, kaip tai iš tikrųjų įgyvendinama.

defišvardinti(seka, pradžia =0):
n = pradžia

dėl elem in seka:
derlius n, element
n += 1

Ši funkcija, kurią galite rasti Python numerate dokumentai, paima seką ir pradžios argumentą, kuris pagal numatytuosius nustatymus yra 0.

Tada funkcija inicijuoja n kintamąjį į pradinį kintamąjį. Tai leidžia sekti iteracijų skaičių.

Kiekvienam sekos elementui sekančioje for ciklo

  • derlius pristabdo ciklo vykdymą.
  • Jis taip pat grąžina dabartinį skaičių (n) ir reikšmę (elem).
  • Kai ciklas atnaujinamas, jis padidinamas n.

Grąžinama vertė yra raktų ir reikšmių porų objektas.

Jei skambintumėte į išvardinti () funkciją ir perduokite jai vaisių sąrašą, tai būtų išvesties vertė.

my_fruits = ["obuoliai", "kriaušės", "bananai"]
numerate_object = išvardinti (mano_vaisiai)
spausdinti (sąrašas (išvardinti_objektą))

# išvestis - [(0, 'obuoliai'), (1, 'kriaušės'), (2, 'bananai')]

Išvardykite naudodami skirtingą pradinį indeksą

Aukščiau pateiktame pavyzdyje mes nenurodėme pradinio indekso. Toliau pateiktame pavyzdyje parodyta, kaip galite nustatyti pradinį indeksą į pasirinktą skaičių.

Norėdami pradėti nuo 10, atlikite šiuos veiksmus.

numerate_object = išvardyti (mano_vaisiai, 10)
spausdinti (sąrašas (išvardinti_objektą))

# išvestis - [(10, 'obuoliai'), (11, 'kriaušės'), (12, 'bananai')]

Python enumerate() Pavyzdžiai

Štai keletas pavyzdžių, rodančių, kaip galite naudoti išvardinti () Python.

Išvardykite Python eilutę

Šiame pavyzdyje 5 rodyklės raidei gauti naudosite numerate:

my_string = "makeuseof"

dėl skaičius, vertė in išvardinti (mano_eilutė):
jeigu skaičiuoti == 5:
spausdinti (vertė)

# išvestis - s

Išvardykite Python kortelę

Taip pat galite naudoti išvardinti () kartoti per a Python rinkinys. Šiame pavyzdyje programa spausdina antraštę pirmoje iteracijoje, prieš rodydama elementus.

my_fruits_tuple = ("obuoliai", "kriaušės", "bananai")

dėl indeksas, vertė in išvardinti (my_fruits_tuple):
jeigu (indeksas == 0):
spausdinti („Vaisiai:“)

spausdinti (vertė)

/*
Vaisiai:
obuoliai
kriaušės
bananai
*/

Išvardykite Python sąrašą

Toliau pateiktame pavyzdyje naudojate numerate, kad sumažintumėte visus sąrašo skaičius virš 10 2.

my_number_list = [10, 17, 15, 6]

dėl indeksas, vertė in išvardinti (mano_numerių_sąrašas):
jeigu (vertė > 10):
mano_numerių_sąrašas[indeksas] -= 2

spausdinti (mano_numerių_sąrašas)

# išvestis – [10, 15, 13, 6]

Naudokite enumerate norėdami suskaičiuoti savo pakartojimus

Python apima išvardinti () kaip įmontuota funkcija. Galite naudoti jį kartoti ir skaičiuoti elementus kartojamoje kolekcijoje, pvz., sąrašą, eilutę ar eilutę. Tai gali padėti jums sekti tikrąjį kiekvieno elemento indeksą, bet taip pat galite nurodyti savo pradinį indeksą. Naudokite jį kaip alternatyvą diapazonas() funkcija, jei dirbate su objektais, kurie nėra skaičiuojami ir indeksuojami objektai.