U računarstvu se for petlja koristiučiniti istu vrstu radnje više puta. Na primjer, možete jedan po jedan izvesti proizvod s popisa, prevrtati brojeve u određenom rasponu i izvršiti odgovarajuću skriptu za svaki od njih.
Petlja for, za razliku od while, najčešće se koristi. Obje opcije postoje u svim programskim jezicima. U većem je broju jezika sintaktički i semantički identičan.
U pythonu, petlja for sastoji se od:
- za operatora;
- naziv varijable koja će se dodijeliti;
- popis koji se obrađuje;
- tijelo funkcije i dodatni operatori.
Za razliku od jezika sličnih C, upute nisuomeđeno vitičastim zagradama {}. Da biste to učinili, upotrijebite operator ":" nakon bloka uvjeta i tablice u tijelu petlje. Bez uvlačenja kartice, kod neće uspjeti i pojavit će se pogreška.
Kako se dodatni operatori nastavljaju, koriste se break, pass - pokazivači za preskakanje iteracije, kraj petlje, preskakanje iteracije. Navedeni su nakon bloka nekih if-else uvjeta.
Za petlju
Ova se petlja koristi za ponavljanje svih elemenata zbirke. Navedeno u formatu
za varijablu na popisu: iskaz
Nalikuje foreach petlji iz C ++
foreach (stavka tipa u kompletu) {}; jer ja u "zdravo svijetu": ispis (i * 2, end = "") hheelllloo wwoorrlldd
U Pythonu je petlja for suradnička - upute u tijelu izvršavaju se za svakog člana popisa bez izričitog navođenja slijeda. Upute se izvršavaju najoptimalnijim redoslijedom.
Varijabla i dodijeljena je svakom objektu izkolekcija. Elementi popisa mogu biti numerički i niz, ali moraju biti cjelobrojnog tipa. Pri radu s višedimenzionalnim nizovima, varijabla i bit će shvaćena kao ugniježđeni nizovi.
popis_popisa = [["čekić", "velika bijela", "pas"], [0, 1, 2], [9.9, 8.8, 7.7]] za popis u popisu_popisa: ispis (popis) ["čekić", "velika bijela", "pas"] [0, 1, 2] [9,9, 8,8, 7,7]
Da biste prikazali svaki element ugniježđenog niza, morate koristiti ugniježđene petlje.
Nastaviti
Operator vam omogućuje da preskočite dio for petlje iidite na sljedeću iteraciju. To se radi kada se pojavi vanjski čimbenik. Nastavak je naveden nakon dodatnog bloka if, ali samo je stanje unutar petlje prije glavnog izraza.
broj = 0 za broj u rasponu (10): broj = broj + 1 ako je broj == 5: continue # evo naredbe continue ispis (str (broj)) ispis ("Kraj")
Svaki broj na popisu vrijednosti od 0 do 10povećava broj varijable koji je u početku nula. Kad broj dosegne vrijednost 5, petlja će završiti i započet će sljedeća iteracija. Ispast će:
jedan 2 3 četiri 6 7 8 9 deset Kraj
Pauza
Operator se koristi zajedno s uvjetom if. Ovaj dizajn u potpunosti prekida ciklus kada se pojavi neki faktor.
broj = 0 za broj u rasponu (10): broj + = 1 ako je broj == 5: break # break ispis ("Number =" + str (number)) print ("izvan petlje")
Ovdje izraz if definira uvjet: ako je vrijednost varijable broj 5, petlja se prekida. Na svakoj se iteraciji izvršava metoda first print () koja prikazuje obavijest
Broj = 5.
Kad se petlja prekine naredbom break, izvršava se sljedeća metoda print ().
Drugi primjer provjerava je li drugi broj djeljiv s prvim bez ostatka.
za n u rasponu (2, 10): za x u rasponu (2, n): ako je n% x == 0: ispis (n, "jednako", x, "*", n // x) pauza drugo: # petlja je pala bez pronalaska faktora ispis (n, "je prost broj")
U ovom se slučaju koristi ugniježđena petlja.Prvo, svi pojmovi iz skupa brojeva u rasponu od 2 do 10 uzimaju se kao n. Za svaki n definira se novi popis s elementima od 2 do n. Dakle, imamo 8 nizova različitih duljina. Svi elementi iz rezultirajućih zbirki navedeni su varijablom x. Uvjet if sada provjerava je li rezultat n / x cjelobrojna vrijednost. Ako je tačno, petlja se prekida i prikazuje neku poruku na zaslonu. Ako je n / x podijeljeno s ostatkom, prikazuje se druga poruka.
Proći
Operater je potreban da bi zanemario dodatne uvjete.
broj = 0 za broj u rasponu (10): broj + = 1 ako je broj == 5: proći ispis (str (broj)) ispis ("Kraj")
Program se ponaša kao da uvjet ako broj == 5 ne postoji. Monitor će se prikazati
jedan 2 3 četiri pet 6 7 8 9 deset Kraj
To vidimo tijekom izvršenja prolaznikaništa se ne događa. Koristi se kao ogrlica samo tamo gdje je sintaktički potrebno. Primjerice, pri razvoju nove klase s metodama koje nije potrebno implementirati.
klasa MyClass (objekt): def meth_a (samo): proći def meth_b (samo): ispis "I" m meth_b "
Funkcija meth_a još nema svoje upute. Ali Python zahtijeva da blokovi koda klase, osim, osim def, nisu prazni. U suprotnom, pojavit će se poruka o pogrešci.
IndentationError: očekuje se uvučeni blok.
Umjesto toga možete navesti pass.
klasa CompileError (iznimka): proći
Druga je svrha korištenja izjave pass izričito reći da se ništa ne radi.
To se može vidjeti u drugom primjeru for i pass petlje:
za t u rasponu (25): učiniti (t) ako je t == 20: proći
Ovaj isječak koda prevlači se preko stavki popisaod 0 do 25. Oni se tretiraju kao varijabla t. Na svakoj se iteraciji izvršava neka funkcija do (). Ako želite da se uopće ne dogodi ništa na nekoj vrijednosti, navodi se pass. Na primjer, funkcija do ispisuje poruku 24 puta i preskače upute pri t = 20.
Nizovi
Za programe petlje pomažu vam stvoriti niz vrijednosti i dodijeliti ih varijablama.
Sljedeći zapis je moguć:
za i u [0, 1, 2, 3, 4, 5]: ispis i ** 2
Da popis sadrži više elemenata, bilo bi racionalnije stvoriti zaseban niz.
niz = [1, 2, 3, 4, 5, 6, 7, 8, 9] za u nizu: ispisati i
Za stvaranje popisa poput
niz = [1, 2, 3, 4, 5, 6, 7, 8, 9]
, Python ima funkciju range ().Metoda range () uzima tri argumenta u području parametara: početna vrijednost, završna vrijednost, korak. Potreban je samo posljednji element popisa. Dakle, raspon (5) značit će da niz uključuje brojeve od 0 do 5. Ako je naveden korak, tada se mora odrediti i početni element.
raspon (0, 10, 2)
Dobivamo:
0, 2, 4, 6, 8, 10
Popisi žica
Rad s takvim popisima sličan je numeričkim. Na primjer, postoji popis
boje = ["crvena", "zelena", "plava", "žuta"]
Programeri naviknuti na C mogu napisati sljedeću funkciju.
za i u opsegu (len (boje)): ispis boja [i]
Kôd će se izvoditi bez greške, ali ispravnije korištenje petlje for izgleda ovako:
boje = ["crvena", "zelena", "plava", "žuta"] za boju u bojama: ispis u boji
Ako trebate listati popis od zadnjeg do nule, koristi se funkcija reversed ().
boje = ["crvena", "zelena", "plava", "žuta"] za obrnutu boju (boje): ispis u boji
Sljedeći je unos pogrešan. Opet, slična stvar potekla je iz jezika C.
Popisi i indeksi
Python pruža ugrađene funkcije enumerate () za manipulaciju indeksima niza. Prikladni su za upotrebu u pythonu za petlje.
Slijed vrijednosti uzima se kao argumente. Funkcija enumerate () olakšava upotrebu sljedećeg koda:
za i u opsegu (len (L)): stavka = L [i] # ... izračunaj neki rezultat na temelju stavke ...
Ovdje se koristi metoda len (). Vraća broj elemenata, u ovom slučaju niz L. Mnogo je elemenata prihvaćeno kao argument funkcije range (). Dakle, definiramo popis [0, ... n].
Uz pomoć L [i] dobivamo pristup svakom elementu niza L.
L [0], L [1], L [2] itd.
Funkcija enumerate () eliminira potrebu za inicijalizacijom varijable brojača b i olakšava pisanje u
za brojač, vrijednost u nabrajanju (L): ispis („indeks:„ brojač, „vrijednost:„ vrijednost) “
Enumerate () vraća par protuusluga, tako da su dvije varijable navedene s izrazom for loop.
Funkcije items () i iteritems (), koje se koriste kao metode, slične su.
d.točke () d.iteritems ()
Dva popisa
Kada je potrebno koristiti članove više popisa, koristi se funkcija zip ().
Potreban je popis A i popis B, od njih pravi jedan zip objekt koji sadrži ugniježđene korice. Svaki element novog objekta povezuje članove popisa A i B i razvrstava ih po indeksu.
zip_objekt [1] = [A [1], B [1]];
Ako ulaz zip () navodi 4 niza,elementi zip polja sadržavat će po 4 elementa. Pakiranje nizova različitih duljina ne dovodi do pogreške. U novi će se objekt smjestiti samo oni elementi koji sadrže vrijednosni par.
Zip_longest () koristi se za uključivanje svakog elementa u tuple, čak i onog bez para.
popis (itertools.zip_longest ((1,2,3), [4])) # [(1, 4), (2, Nijedno), (3, Nijedno)]
Poredaj po ključu
Kada je potrebno ne samo prolaziti kroz elemente niza, već i mijenjati ga, koristi se funkcija keys ().
Metoda duplicira i vraća popis dostupnih ključeva rječnika.
za k u ključevima d. (): ako je k.startswith ("R"): del d [k]
Postoji niz d. Njeni se elementi kopiraju metodom keys (). Svaki je element varijabla k. Obrađuje se pomoću startwith, ako postoji podudaranje, stavka se uklanja iz glavnog polja.
startwith () vraća zastavicu koja provjerava počinje li niz s navedenim prefiksom. Funkcija ima tri argumenta: prefiks, početak, kraj.
str.startswith (prefiks [, početak [, kraj]]) -> bool
Potreban je samo prvi - prefiks. To može biti žica ili torta.
my_str.startswith ('vrijednost')
ili
my_str.startswith ((‘‘ vrijednost1 ’,‘ vrijednost2 ’))
Ako je u polju parametra potrebno više redaka, elementi se umotavaju u dodatne zagrade ().
Argument start ukazuje na indeks elementa skoje započinje odbrojavanje. Podržane su pozitivne i negativne vrijednosti. Ako je start = -x, tada pretraživanje započinje s kraja elementa s indeksom x. Parametar end označava posljednji znak na kojem se zaustavlja raščlanjivanje niza. Također podržava negativne vrijednosti. Ako je end = -x, posljednji član popisa s indeksom x od početka.
Funkcija ENDWITH () radi analogno analogiji STARTWITH () Provjerava završava li niz navedenim postfixom. Ima tri parametra sufiks, početak, kraj, a također vraća logičku vrijednost.
Kombiniranje popisa
Ako trebate povezati elemente dva polja,najbrži način je korištenje gomile metoda dikta (izip (niz 1, niz 1)). U ovom slučaju, elementi nisu poredani redom jedan za drugim, već u obliku:
'Array element 1': 'Array element 2'
imena = ["raymond", "rachel", "matthew"] boje = ["crvena", "zelena", "plava"] d = dict (zip (imena, boje)) # {"matthew": "blue", "rachel": "green", "raymond": "red"}
Metoda dict () kreira rječnik, unutar kojegvrijednosti se postavljaju na gornji način - kroz ":". Kao glavna vrijednost koristi se element niza 2. Da biste ga pozvali, trebate ga uputiti indeksom - vrijednošću niza 1.
d ['raymond'] #Crvena
Brojanje članova popisa
Da biste saznali koliko se elemenata sastoji od popisa, upotrijebite funkciju get ().
d.get (ključ, zadani = Nijedan)
Ova metoda provjerava prisutnost ključa u rječniku d i vraća indeksni ključ [indeks].
boje = ["crvena", "zelena", "crvena", "plava", "zelena", "crvena"] d = {} za boju u bojama: d [boja] = d.get (boja, 0) + 1
Metoda get () prikladniji je i brži analog sljedećeg koda.
boje = ["crvena", "zelena", "crvena", "plava", "zelena", "crvena"] d = {} za boju u bojama: ako boja nije u d: d [boja] = 0 d [boja] + = 1
Ovo su osnovni primjeri i moguće pogreške for petlje.