Për ciklin në Python

Cikli For në Python ka disa veçori të ndryshme nga gjuhët e tjera të programimit. Po ju lë atë që po mësoj për të përfituar sa më shumë nga një prej sytheve më të përdorur.

Në Python synohet të përsëritet përmes një objekti të përsëritur, qoftë një listë, një objekt ose një element tjetër.

Struktura e mëposhtme është

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

for j in h2:
   instructions

Këtu h2 është një element i përsëritur për shembull një listë h2=[ 'Valencia', 'Castellón', 'Alicante']. Cikli do të ketë 3 përsëritje, në të parën j=Valencia në të dytën ndryshoren j=Castellón.

Dhe me këtë ne mund të përcaktojmë udhëzimet që duam, duke kujtuar gjithmonë dhëmbëzimin, diçka thelbësore në Python dhe që shumë njerëz e injorojnë, duke marrë gabime në kod.

Përsëriteni për ciklin një numër të saktë herë.

Nëse duam që të përsëritet një numër i caktuar herë siç mund të bëjmë në C++, do të duhet të përdorim range(). Për të përsëritur 10 herë do të përdornim a

for element in Range(9):
    instructions

Ne vendosim 9 dhe jo 10 sepse Gama fillon nga 0, pra nga 0 në 9 ka 10 përsëritje ose kthesa të lakut.

Njohja e Range () na lejon, në vend që të vendosim një numër brenda, të vendosim një ndryshore, me të cilën do të kemi shumë më tepër kontroll.

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

Funksioni Range ka shumë opsione, unë do të flas për të në një postim tjetër, në mënyrë që të mos përzihet përmbajtjen dhe të mos zhvillohet sa më shumë.

Mund të bëhet shumë më tepër për të kontrolluar rrjedhën e ciklit for.

Pushoni dhe vazhdoni deklaratat

Ka 2 veçori shumë të dobishme që na lejojnë të bëjmë një lak for shumë funksional, fon break dhe vazhdim. Ato zakonisht përdoren me kusht, nëse, duke kontrolluar nëse diçka është e vërtetë.

Ata punojnë në unaza të tjera, dhe ka një deklaratë tjetër interesante që është pass, e cila është një deklaratë që ekzekutohet por nuk bën asgjë dhe është ideale për kur duam të përcaktojmë një strukturë që kërkon komanda, por duam t'i vendosim ato më vonë (komentet janë jo e dobishme për këtë)

Pushim

Me pushim ne mund të dalim nga cikli në çdo kohë. Siç e imagjinoni shumë e dobishme. Është e vërtetë që ka struktura të tjera si Ndërsa,

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

vazhdoj

Na bën të shkojmë te elementi tjetër në lak.

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/

Për… tjetër

Ekziston një strukturë që rrjedh nga For, e cila është për ... tjetër

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

Kjo strukturë u ngrit pasi ata panë se ishte e nevojshme dhe se shumë njerëz po përdornin mënyra alternative për ta arritur këtë. Kështu, ata ndihmojnë njerëzit dhe marrin një kod më të lexueshëm

për _ në iterable

Unë e kam parë këtë në disa programe edhe pse nuk e kam përdorur kurrë.

Kur përsërisim një objekt, listë, fjalor, etj, por përmbajtja e atyre elementeve nuk na intereson, mund ta tregojmë me _

Një shembull:

Ne duam të numërojmë elementet e një liste, por nuk na intereson se çfarë përmban ajo, ne duam vetëm gjatësinë e saj.

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

Në shumë faqe ata rekomandojnë që të mos abuzohet me këtë praktikë. Vërtet nuk i di avantazhet që paraqet, a është më i shpejtë?

duke u rrotulluar prapa

prapa për lak. Për të përsëritur nga fundi në fillim

Ai përdor funksionin reversed() të prezantuar në python 3

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

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

Looping me dy indekse, vlera e iterable dhe indeksi

Me enumerate() mund të punojmë me indekset e një koleksioni. Sepse shumë herë, përveç vlerës së vetë objektit iterable, na intereson edhe indeksi i tij.

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

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

Duke përsëritur mbi 2 lista

Një tjetër opsion shumë interesant është zip() që do të na lehtësojë punën dhe do ta bëjë kodin tonë më të thjeshtë dhe më të lexueshëm.

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

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

Në Python 2.x izip() u përdor për të përmirësuar këtë funksion, por në Python 3 izip është zip()

Looping në rend të renditur

Përsëriteni sipas vlerës së objektit në vend të indeksit të tij. përdoret sorted().

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

for color in sorted(colors):
    print color

Dhe nëse duam ta bëjmë mbrapsht

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

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

Rendi i personalizuar i renditjes

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

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

Vlera Sentinel në ciklin për

Vlera sentinel është një vlerë që shkakton fundin e ciklit. Zakonisht paraqitet në një cikël while, por Raymond Hettinger na tregon se si ta përdorim atë me një for, që është më i shpejtë

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

Përshkoni fjalorë me për

Fjalorët janë mjete thelbësore për të shprehur marrëdhëniet dhe për të bërë grupime.

Ju mund të kaloni fjalorin në mënyrë tradicionale me for, por kjo nuk do të kthejë të gjithë informacionin, ne nuk do të mund të punojmë me vlera dhe indekse si kjo, nëse nuk fillojmë të shtojmë numërues dhe elementë të tjerë.

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

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

Në këtë mënyrë, përveç shikimit të elementeve, mund të modifikojmë fjalorin duke ndryshuar elementë ose duke i fshirë ato, në të njëjtën kohë që përsëritet cikli for.

d.keys() thërret argumentet dhe bën një kopje që e ruan në një listë që ne mund ta modifikojmë.

Për të marrë indekse dhe vlera në vend të diçkaje tradicionale dhe kjo është gjëja e parë që na vjen në mendje për ata prej nesh që fillojnë programimin

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

Ne do ta përdorim këtë opsion shumë më të shpejtë

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

artikuj () sesa artikuj ()

Flisni rreth Loops në Python nga Raymond Hettinger

Është një video e vjetër por shumë ilustruese, ku në 20 minutat e para Raymond Hettinger na mëson mundësitë e ndryshme të loop-eve në Python dhe na jep shembuj se si ato transformojnë strukturat e përdorura gjerësisht nga njerëzit në funksione, për ta bërë ciklin më të lexueshëm dhe më të thjeshtë. kodi.

Lini një koment