Silmuste jaoks Pythonis

Loop-avalduste jaoks

Python kasutab elementide loendi kordamiseks for for loopi. Erinevalt C-st või Java-st, mis kasutavad for loopi väärtuse muutmiseks sammude kaupa ja pääsevad juurde sellele väärtusele, näiteks massiivile.

Silmuste korral korratakse kogupõhiste andmestruktuuride, näiteks loendite, koondvormide ja sõnastike üle.

Põhisüntaks on:

for value in list_of_values: # use value inside this block

Üldiselt võite iteraatori väärtusena kasutada kõike, kuhu saab iterable kirjeid omistada. Näiteks saate paarid lahti pakkida nende loendist:

list_of_tuples = [(1,2), (3,4)] for a, b in list_of_tuples: print("a:", a, "b:", b)

Teiselt poolt saate vaadata kõike, mis on korduv. Võite helistada funktsioonile või kasutada loendi literaali.

for person in load_persons(): print("The name is:", person.name)
for character in ["P", "y", "t", "h", "o", "n"]: print("Give me a '{}'!".format(character))

Mõned viisid, kuidas For silmusid kasutatakse:

Kordusfunktsioon vahemikus ()

for i in range(10): print(i)

Funktsiooniks olemise asemel on vahemik tegelikult muutumatu järjestustüüp. Väljund sisaldab tulemusi alumisest piirist, st 0 kuni ülemise piirini, st 10, kuid välja arvatud 10. Vaikimisi on alumine piir või algindeks nullitud. Väljund:

> 0 1 2 3 4 5 6 7 8 9 >

Lisaks saab määrata järjestuse alumise piiri ja isegi jada astme, lisades teise ja kolmanda parameetri.

for i in range(4,10,2): #From 4 to 9 using a step of two print(i)

Väljund:

> 4 6 8 >

funktsioon xrange ()

Valdavalt on xrange ja vahemik funktsionaalsuse osas täpselt samad. Mõlemad pakuvad võimalust luua täisarvude loend, mida saaksite kasutada, kuid soovite. Ainus erinevus on see, et vahemik tagastab Pythoni loendi objekti ja xrange tagastab xrange objekti. See tähendab, et xrange ei loo reaalajas staatilist loendit, nagu seda teeb vahemik. See loob väärtused vastavalt vajadusele spetsiaalse tehnikaga, mida nimetatakse tootmiseks. Seda tehnikat kasutatakse teatud tüüpi objektide puhul, mida nimetatakse generaatoriteks.

Veel üks asi lisada. Python 3.x-s pole xrange-funktsiooni enam olemas. Range funktsioon teeb nüüd seda, mida xrange teeb Python 2.x-is

Korduvad loendis või dupleksis olevad väärtused

A = ["hello", 1, 65, "thank you", [2, 3]] for value in A: print(value)

Väljund:

> hello 1 65 thank you [2, 3] >

Korduvad sõnastikus võtmed (aka hashmap)

fruits_to_colors = {"apple": "#ff0000", "lemon": "#ffff00", "orange": "#ffa500"} for key in fruits_to_colors: print(key, fruits_to_colors[key])

Väljund:

> apple #ff0000 lemon #ffff00 orange #ffa500 >

Funktsiooniga zip () kordage ühes silmus üle kahe ühesuuruse loendi

A = ["a", "b", "c"] B = ["a", "d", "e"] for a, b in zip(A, B): print a, b, a == b 

Väljund:

> a a True b d False c e False >

Kordage loendi kohal ja hankige funktsioon loendiga () vastav register

A = ["this", "is", "something", "fun"] for index,word in enumerate(A): print(index, word)

Väljund:

> 0 this 1 is 2 something 3 fun >

Tavaline kasutusjuht on sõnastiku kordamine:

for name, phonenumber in contacts.items(): print(name, "is reachable under", phonenumber)

Kui te absoluutselt vaja juurdepääsu indeks oma iteratsiooni, ei ole kasutada range(len(iterable))! See on äärmiselt halb tava ja annab teile Pythoni kõrgemate arendajate poolt palju naeratusi. Kasutage selle enumerate()asemel sisseehitatud funktsiooni :

for index, item in enumerate(shopping_basket): print("Item", index, "is a", item)

for / else avaldused

Pyhton lubab teil loopide jaoks kasutada muud koos, teine ​​juhtum täidetakse siis, kui ükski silmusekeha tingimustest ei olnud täidetud. Muu kasutamiseks peame kasutama breaklauset, et saaksime silmusest välja murda rahuldatud tingimustel. Kui me ei murra, siis täidetakse teine ​​osa.

week_days = ['Monday','Tuesday','Wednesday','Thursday','Friday'] today = 'Saturday' for day in week_days: if day == today: print('today is a week day') break else: print('today is not a week day')

Ülaltoodud juhul on väljundiks, today is not a week daykuna silmusisene katkestus ei toimu kunagi.

Kordage loendi kohal, kasutades sisseehelist silmusfunktsiooni

Võiksime ka itthon iteerida pythoni abil, näiteks kui peame loendis loendis olevad kõik sõnad suurtähtedega sisestama, võiksime lihtsalt teha järgmist:

A = ["this", "is", "awesome", "shinning", "star"] UPPERCASE = [word.upper() for word in A] print (UPPERCASE)

Väljund:

> ['THIS', 'IS', 'AWESOME', 'SHINNING', 'STAR'] >

Rohkem informatsiooni:

  • Python2 tsükli dokumentatsiooni jaoks
  • Python3 tsükli dokumentatsiooni jaoks