bucla pentru în Python

Bucla For din Python are unele caracteristici diferite față de alte limbaje de programare. Vă las ceea ce învăț pentru a profita la maximum de una dintre cele mai folosite bucle.

În Python este destinat să itereze printr-un obiect iterabil, fie el o listă, un obiect sau un alt element.

Următoarea structură este

h2=[ 'Valencia', 'Castellón', 'Alicante']

for j in h2:
   instructions

Aici h2 este un element iterabil, de exemplu o listă h2=[ 'Valencia', 'Castellón', 'Alicante']. Bucla va avea 3 iterații, în prima j=Valencia în a doua variabila j=Castellón.

Și cu aceasta putem defini instrucțiunile pe care le dorim, amintindu-ne mereu indentarea, ceva esențial în Python și pe care mulți oameni îl ignoră, obținând erori în cod.

Repetați bucla for de un număr exact de ori.

Dacă vrem să se repete de un anumit număr de ori așa cum putem face în C++, va trebui să folosim range(). Pentru a repeta de 10 ori am folosi a

for element in Range(9):
    instructions

Punem 9 și nu 10 pentru că Range începe de la 0, deci de la 0 la 9 sunt 10 iterații sau ture ale buclei.

Cunoașterea Range() ne permite, în loc să punem un număr înăuntru, să punem o variabilă, cu care vom avea mult mai mult control.

var = 10
for element in Range(var):
    instructions

Funcția Range are multe opțiuni, despre asta voi vorbi într-o altă postare, pentru a nu amesteca conținutul și a-l dezvolta cât mai mult.

Se pot face mult mai multe pentru a controla fluxul buclei for.

Declarații Break and Continue

Există 2 caracteristici foarte utile care ne permit să facem o buclă for foarte funcțională, prin pauză și continuare. Ele sunt de obicei folosite cu condiționale, dacă, verificând dacă ceva este adevărat.

Ele funcționează în alte bucle și există o altă instrucțiune interesantă care este pass, care este o instrucțiune care este executată, dar nu face nimic și este ideală atunci când vrem să definim o structură care necesită comenzi, dar vrem să le punem mai târziu (comentariile sunt nu este util pentru asta)

Pauză

Cu pauză putem ieși din buclă oricând. După cum vă imaginați foarte util. Este adevărat că există și alte structuri precum While,

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')

A continua

Ne face să mergem la următorul element din buclă.

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/

Pentru... altceva

Există o structură derivată din For, care este pentru... else

datos = [1, 2, 3, 4, 5]
for n in datos:
    if n == 2:
        break
else:
    print('No hay 2')

Această structură a apărut după ce au văzut că este necesar și că mulți oameni foloseau căi alternative pentru a realiza acest lucru. Astfel, ajută oamenii și obțin un cod mai lizibil

pentru _ în iterabil

Am văzut asta în unele programe, deși nu l-am folosit niciodată.

Când repetăm ​​un obiect, listă, dicționar etc., dar conținutul acelor elemente nu ne interesează, îl putem indica cu _

Un exemplu:

Vrem să numărăm elementele unei liste, dar nu ne interesează ce conține, vrem doar lungimea ei.

h2=[ 'Valencia', 'Castellón', 'Alicante']
count = 0
for _ in h2:
    cont += 1

Pe multe site-uri ei recomandă să nu abuzați de această practică. Chiar nu stiu ce avantaje prezinta, este mai rapid?

buclă înapoi

înapoi pentru buclă. A repeta de la sfârșit până la început

Utilizează funcția inversă() introdusă în python 3

h2=[ 'Valencia', 'Castellón', 'Alicante']

for j in reversed(h2):
    print (j)

Buclă cu doi indici, valoarea iterabilului și index

Cu enumerate() putem lucra cu indicii unei colecții. Pentru că de multe ori, pe lângă valoarea obiectului iterabil în sine, ne interesează indexul acestuia.

h2=[ 'Valencia', 'Castellón', 'Alicante']

for j, h in enumerate(h2):
    print j, '-->', h2[i] 

Repetare peste 2 liste

O altă opțiune foarte interesantă este zip() care ne va ușura munca și ne va face codul mai simplu și mai lizibil.

h2=[ 'Valencia', 'Castellón', 'Alicante']
cod=[100, 200, 300]

for j, h in zip(h2, cod):
    print h2, '-->', cod 

În Python 2.x izip() a fost folosit pentru a îmbunătăți această funcție, dar în Python 3 izip este zip()

Buclă în ordine sortată

Iterați în ordine după valoarea obiectului și nu după indicele acestuia. este folosit sorted().

colors = ['rojo', 'amarillo', 'verde']

for color in sorted(colors):
    print color

Și dacă vrem să o facem invers

colors = ['rojo', 'amarillo', 'verde']

for color in sorted(colors, reverse=True):
    print color

Ordine de sortare personalizată

colors = ['rojo', 'amarillo', 'verde']

for color in sorted(colors, key=len):
    print color

Valoarea Sentinel în bucla pentru

Valoarea sentinelă este o valoare care face ca bucla să se încheie. Este de obicei prezentat într-o buclă while, dar Raymond Hettinger ne arată cum să-l folosim cu un for, care este mai rapid

blocks = []
for block in iter(partial(f.read, 32), ''):
    blocks.append(block)
    print (block)

Traversați dicționare cu for

Dicționarele sunt instrumente esențiale pentru exprimarea relațiilor și realizarea grupărilor.

Puteți parcurge dicționarul într-un mod tradițional cu for, dar asta nu va returna toate informațiile, nu vom putea lucra cu valori și indici așa, dacă nu începem să adăugăm contoare și alte elemente.

d = {'casa': 'azul', 'coche': 'rojo', 'hombre': 'verde'}

for k in d.keys():
    if k.startswith('r'):
        del d[k]

În acest fel, pe lângă faptul că vedem elementele, putem modifica dicționarul schimbând elemente sau ștergându-le, în același timp în care bucla for este iterată.

d.keys() apelează argumentele și face o copie pe care o stochează într-o listă pe care o putem modifica.

Pentru a obține indici și valori în loc de ceva tradițional și acesta este primul lucru care ne vine în minte celor dintre noi care încep să programăm

for k in d:
    print k, '-->', d[k]

Vom folosi această opțiune mult mai rapidă

for k, v in d.items():
    print k, '-->', v

itemitem() decât itemi()

Discuție despre bucle în Python de Raymond Hettinger

Este un videoclip vechi, dar foarte ilustrativ, în care în primele 20 de minute Raymond Hettinger ne învață diferitele posibilități ale buclelor în Python și ne oferă exemple despre cum transformă structurile utilizate pe scară largă de oameni în funcții, pentru a face bucla mai lizibilă și mai simplă. .cod.

Lasă un comentariu