Bouk For nan Python gen kèk karakteristik diferan pase lòt lang pwogramasyon. Mwen kite ou sa m ap aprann pou jwenn pi plis nan youn nan bouk ki pi itilize yo.
Nan Python li gen entansyon iterasyon atravè yon objè iterable, kit se yon lis, yon objè, oswa yon lòt eleman.
Estrikti sa a se
h2=[ 'Valencia', 'Castellón', 'Alicante'] for j in h2: instructions
Isit la h2 se yon eleman iterabl pou egzanp yon lis h2=[ 'Valencia', 'Castellón', 'Alicante']. Bouk la pral gen 3 iterasyon, nan premye j=Valencia nan dezyèm varyab j=Castellón.
Ak sa a nou ka defini enstriksyon yo nou vle, toujou sonje endentasyon an, yon bagay esansyèl nan Python ak ke anpil moun inyore, jwenn erè nan kòd la.
Itere pou bouk yon kantite egzak de fwa.
Si nou vle li repete yon sèten kantite fwa jan nou ka fè nan C++ nou pral oblije sèvi ak ranje (). Pou repete 10 fwa nou ta itilize a
for element in Range(9): instructions
Nou mete 9 epi pa 10 paske Range kòmanse soti nan 0, kidonk soti nan 0 a 9 gen 10 iterasyon oswa vire nan bouk la.
Konnen Range() pèmèt nou, olye pou nou mete yon nimewo andedan, mete yon varyab, kidonk nou pral gen plis kontwòl.
var = 10 for element in Range(var): instructions
Fonksyon an Range gen anpil opsyon, mwen pral pale sou li nan yon lòt pòs, pou yo pa melanje kontni an epi devlope li otank posib.
Anpil plis ka fè pou kontwole flux de boucle for a.
Deklarasyon Break and Continue
Gen 2 karakteristik trè itil ki pèmèt nou fè yon bouk pou trè fonksyonèl, fon an kraze ak kontinye a. Yo anjeneral yo itilize ak kondisyonèl, si, tcheke si yon bagay se vre.
Yo travay nan lòt bouk, epi gen yon lòt deklarasyon enteresan ki pase, ki se yon deklarasyon ki egzekite men pa fè anyen epi ki ideyal pou lè nou vle defini yon estrikti ki mande kòmand men nou vle mete yo pita (kòmantè yo se pa itil pou sa)
Pak
Avèk break nou ka sòti bouk la nenpòt ki lè. Kòm ou imajine trè itil. Se vre ke gen lòt estrikti tankou Pandan,
numeros = [1, 2, 4, 3, 5, 8, 6] for n in numeros: if n == 3: break else: print('No se encontró el número 3')
Kontinye
Li fè nou ale nan pwochen eleman nan bouk la.
numeros = [1, 2, 4, 3, 5, 8, 6] for n in numeros: if n == 3: continue else: print('No se encontró el número 3')
https://j2logo.com/bucle-for-en-python/
Pou… lòt bagay
Gen yon estrikti ki sòti nan Pou, ki se pou ... lòt bagay
datos = [1, 2, 3, 4, 5] for n in datos: if n == 2: break else: print('No hay 2')
Estrikti sa a te parèt apre yo te wè li nesesè e ke anpil moun t ap itilize lòt fason pou reyalize sa. Kidonk, yo ede moun epi jwenn yon kòd ki pi lizib
pou _ nan iterabl
Mwen te wè sa nan kèk pwogram byenke mwen pa janm itilize li.
Lè n ap repete yon objè, lis, diksyonè, elatriye, men kontni eleman sa yo pa enterese nou, nou ka endike li ak _
Yon egzanp:
Nou vle konte eleman yo nan yon lis men nou pa pran swen sa li genyen, nou jis vle longè li.
h2=[ 'Valencia', 'Castellón', 'Alicante'] count = 0 for _ in h2: cont += 1
Nan anpil sit yo rekòmande pou pa abize pratik sa a. Mwen vrèman pa konnen avantaj li prezante, èske li pi vit?
bouk bak
bak pou bouk. Pou repete depi nan fen rive nan kòmansman an
Li itilize fonksyon ranvèse () prezante nan python 3
h2=[ 'Valencia', 'Castellón', 'Alicante'] for j in reversed(h2): print (j)
Looping ak de endis, valè iterable a ak endèks
Avèk enumerate() nou ka travay ak endis yo nan yon koleksyon. Paske anpil fwa, anplis valè objè iterable tèt li, nou enterese nan endèks li yo.
h2=[ 'Valencia', 'Castellón', 'Alicante'] for j, h in enumerate(h2): print j, '-->', h2[i]
Iterasyon sou 2 lis
Yon lòt opsyon trè enteresan se zip() ki pral fè travay nou pi fasil epi ki pral fè kòd nou an pi senp ak plis lizib.
h2=[ 'Valencia', 'Castellón', 'Alicante'] cod=[100, 200, 300] for j, h in zip(h2, cod): print h2, '-->', cod
Nan Python 2.x izip() te itilize pou amelyore fonksyon sa a, men nan Python 3 izip se zip()
Boukle nan lòd klase
Iterasyon nan lòd pa valè objè a olye pou yo pa endèks li. klase () yo itilize
colors = ['rojo', 'amarillo', 'verde'] for color in sorted(colors): print color
Men, si nou vle fè li bak
colors = ['rojo', 'amarillo', 'verde'] for color in sorted(colors, reverse=True): print color
Lòd sòt koutim
colors = ['rojo', 'amarillo', 'verde'] for color in sorted(colors, key=len): print color
Valè Sentinel nan pou bouk
Valè sentinèl la se yon valè ki lakòz bouk la fini. Li se anjeneral prezante nan yon bouk pandan y ap, men Raymond Hettinger montre nou ki jan yo sèvi ak li ak yon for, ki se pi vit.
blocks = [] for block in iter(partial(f.read, 32), ''): blocks.append(block) print (block)
Traverse diksyonè ak pou
Diksyonè yo se zouti esansyèl pou eksprime relasyon ak fè gwoupman.
Ou ka ale nan diksyonè a nan yon fason tradisyonèl ak pou, men sa pa pral retounen tout enfòmasyon yo, nou pa yo pral kapab travay ak valè ak endis tankou sa a, si nou pa kòmanse ajoute kontè ak lòt eleman.
d = {'casa': 'azul', 'coche': 'rojo', 'hombre': 'verde'} for k in d.keys(): if k.startswith('r'): del d[k]
Nan fason sa a, anplis wè eleman yo, nou ka modifye diksyonè a lè nou chanje eleman oswa efase yo, an menm tan ke bouk for a repete.
d.keys() rele agiman yo epi fè yon kopi ke li magazen nan yon lis ke nou ka modifye.
Pou jwenn endis ak valè olye de yon bagay tradisyonèl e se premye bagay ki vin nan tèt nou pou nou menm ki kòmanse pwograme.
for k in d: print k, '-->', d[k]
Nou pral sèvi ak opsyon sa a pi vit
for k, v in d.items(): print k, '-->', v
iteritems() pase atik()
Pale sou Loops nan Python pa Raymond Hettinger
Li se yon videyo ansyen men trè ilistratif, kote nan premye 20 minit yo Raymond Hettinger anseye nou diferan posiblite yo nan bouk nan Python epi li ban nou egzanp sou fason yo transfòme estrikti lajman itilize pa moun nan fonksyon, pou fè bouk la pi lizib ak pi senp. .kod.