vir lus in luislang. Sintaksis, lysiterasie, breek, gaan voort en ander kenmerke

Цikl vir luislang i siklus terwyl – stellings sagteware Taal, naamlik: iterasie operateurs, laating herhaal kode gegewe nommer tyd.

Цикл Vir - сintaks

Soos reeds verduidelik, cinclude for in Python is 'n iterator gebaseer opй per siklusidentiteit. is hy handelinge deur tupelelemente и lys woordeskat sleutels en ander herhaalbare voorwerpe.

'n Lus in Python begin met die sleutelwoord vir, gevolg deur 'n arbitrêre veranderlike naam wat die waarde van die volgende voorwerp in die gegewe volgorde stoor. Die algemene sintaksis vir for…in in luislang lyk soos volg:

vir in: anders:      

komponente "reekse" word gelys een na die ander siklus veranderlike. Of eerder, veranderlike wys op sodanige elemente. Vir almal van hulle “aksie” uitgevoer word.

'n Eenvoudige lus in Python met 'n spesifieke voorbeeld:

>>> tale = ["C", "C++", "Perl", "Python"] >>> vir x in tale: ... druk(x) ... C C++ Perl Python >>>

Die ander blok is spesiaalste. As 'n programmeerderыwerk с Perl bekendы met hom, Wat vir diegene wat interaksie het с C en C++ — dit is 'n innovasie. Semanties dit funksies тidenties terwyl lus.

Slegs uitgevoer wanneer die lus nie deur die breekstelling "gestop" word nie. Dit wil sê, dit word slegs uitgevoer nadat alle elemente deur die gespesifiseerde volgorde gegaan het.

Breekoperateur in luislang – breek

As die program 'n for-lus het nodig onderbreekdie breek verklaring, he volledigedit gaanen program vloei sal vervolgom te wees sonder aktivering van anders.

Meer gereeld breek frases in luislanguyutsya met voorwaardelike verklarings.

edibles = ["chops", "dumplings","eggs","nuts"] vir kos in eetbares: if food == "dumplings": print("Ek eet nie kluitjies nie!") break print("Great, heerlike " + kos) else: print("Dis goed dat daar nie kluitjies was nie!") print("Aandete is verby.")

As jy hierdie kode gebruik, kry jy die volgende resultaat:

Heerlike, heerlike tjops. Ek eet nie bolletjies nie! Aandete is verby.

Ons verwyder "bolletjies" uit die bestaande lys data en kry:

Uitstekend, heerlike tjops Uitstekend, heerlike eiers Uitstekend, heerlike neute Goeie ding daar was geen kluitjies nie! Aandete is verby.

python skip-operateur – gaan voort

Kom ons sê dat die gebruiker se antipatie vir sulke produkte nie so groot is om hul verbruik heeltemal te laat vaar nie. As gevolg hiervan gaan die lus voort met die operateur continue. Die volgende skrif gebruik die stelling continue, om voort te gaan om deur die lys oor "kluitjiekontak" te herhaal.

edibles = ["chops", "dumplings","eggs","nuts"] vir kos in eetbares: if food == "dumplings": print("Ek eet nie kluitjies nie!") continue print("Great, heerlike " + kos) # dit kan kode wees om kos te geniet :-) anders: print("Ek haat bolletjies!") druk("Aandete is verby.")

Die bottom line:

Heerlike, heerlike tjops. Ek eet nie kluitjies nie! Groot, heerlike eiers Groot, heerlike neute Ek haat bolletjies! Aandete is verby.

Iterasie oor lyste met die range() funksie

As jy toegang tot die indekse van 'n lys wil verkry, is dit nie duidelik hoe om 'n for-lus vir hierdie doel te gebruik nie. Dit is moontlik om toegang tot alle elemente te verkry, maar die element se indeks sal ontoeganklik bly. Daar is egter 'n metode vir toegang tot beide die element se indeks en die element self. Vir hierdie doel word die funksie gebruik range() gekombineer met die lengtefunksie len():

fibonacci = [0,1,1,2,3,5,8,13,21] vir i in reeks(len(fibonacci)): druk(i,fibonacci[i])

kry:

0 0 1 1 2 1 3 2 4 3 5 5 6 8 7 13 8 21

Aandag! Wanneer dit toegepas word len() к list or tuple, word die ooreenstemmende aantal elemente van die gegewe ry verkry.

Moeilikhede om oor lyste te herhaal

Wanneer oor 'n lys herhaal word, word dit aanbeveel om lysdinamika in die lusliggaam te vermy. Vir duidelikheid kan ons die volgende opsie bied:

kleure = ["rooi"] vir i in kleure: as i == "rooi": kleure += ["swart"] as ek == "swart": kleure += ["wit"] druk(kleure)

Wat gebeur wanneer jy aansoek doen print(colours)?

['rooi', 'swart', 'wit']

Om dit te vermy, word dit aanbeveel om met die kopie te werk deur skywe te gebruik, soos in die voorbeeld hieronder:

kleure = ["rooi"] vir i in kleure[:]: as i == "rooi": kleure += ["swart"] as ek == "swart": kleure += ["wit"] druk(kleure) )

Resultaat:

['Rooi Swart']

Die lys is verander colours, maar hierdie aksie het nie die lus beïnvloed nie. Die data wat herhaal moes word, het onveranderd gebly tydens die uitvoering van die lus.

Tel op in luislang 3

Enumerate is 'n ingeboude Python-funksie. Die meeste beginners, sowel as sommige ervare programmeerders, is nie bewus van die bestaan ​​daarvan nie. Dit laat jou toe om outomaties iterasies van die lus te tel. Byvoorbeeld:

vir teller, waarde in enumerate (sommige_lys): druk (teller, waarde)

funksie enumerate neem ook 'n opsionele argument (die waarde van die oorsprong, by verstek geneem vir 0). Wat dit selfs meer doeltreffend maak.

my_list = ['appel', 'piesang', 'kersie', 'perske'] vir c, waarde in enumerate(my_lys, 1): druk(c, waarde) # Resultaat: # 1 appel # 2 piesang # 3 kersie # 4 perske

Lewer Kommentaar