Pentru declarațiile buclei

Python folosește o buclă for pentru a itera pe o listă de elemente. Spre deosebire de C sau Java, care folosesc bucla for pentru a schimba o valoare în pași și pentru a accesa ceva cum ar fi o matrice folosind acea valoare.

Pentru bucle iterați asupra structurilor de date bazate pe colectare, cum ar fi liste, tupluri și dicționare.

Sintaxa de bază este:

for value in list_of_values:
  # use value inside this block

În general, puteți utiliza orice ca valoare de iterator, unde pot fi atribuite intrări ale iterabilului. De exemplu, puteți despacheta tupluri dintr-o listă de tupluri:

list_of_tuples = [(1,2), (3,4)]

for a, b in list_of_tuples:
  print("a:", a, "b:", b)

Pe de altă parte, puteți face loop peste orice este iterabil. Puteți apela o funcție sau puteți utiliza o listă literală.

for person in load_persons():
  print("The name is:", person.name)
for character in ["P", "y", "t", "h", "o", "n"]:
  print("Give me a '{}'!".format(character))

Unele moduri în care sunt utilizate buclele For:

Iterează funcția range ()

for i in range(10):
    print(i)

În loc să fie o funcție, intervalul este de fapt un tip de secvență imuabil. Ieșirea va conține rezultate de la limita inferioară, adică 0 la limita superioară, adică 10, dar excluzând 10. În mod implicit, limita inferioară sau indicele de pornire este setat la zero. Ieșire:

>
0
1
2
3
4
5
6
7
8
9
>

În plus, se poate specifica limita inferioară a secvenței și chiar pasul secvenței adăugând un al doilea și un al treilea parametru.

for i in range(4,10,2): #From 4 to 9 using a step of two
    print(i)

Ieșire:

>
4
6
8
>

funcția xrange ()

În cea mai mare parte, xrange și gama sunt exact aceleași în ceea ce privește funcționalitatea. Ambele oferă o modalitate de a genera o listă de numere întregi pe care să le utilizați, oricum doriți. Singura diferență este că intervalul returnează un obiect de listă Python și xrange returnează un obiect xrange. Înseamnă că xrange nu generează de fapt o listă statică în timpul rulării, așa cum o face intervalul. Creează valorile pe măsură ce aveți nevoie de ele cu o tehnică specială numită cedare. Această tehnică este utilizată cu un tip de obiect cunoscut sub numele de generatoare.

Încă un lucru de adăugat. În Python 3.x, funcția xrange nu mai există. Funcția Range face acum ceea ce face xrange în Python 2.x

Iterează peste valorile dintr-o listă sau tuplu

A = ["hello", 1, 65, "thank you", [2, 3]]
for value in A:
    print(value)

Ieșire:

>
hello
1
65
thank you
[2, 3]
>

Iterează tastele dintr-un dicționar (aka hashmap)

fruits_to_colors = {"apple": "#ff0000",
                    "lemon": "#ffff00",
                    "orange": "#ffa500"}

for key in fruits_to_colors:
    print(key, fruits_to_colors[key])

Ieșire:

>
apple #ff0000
lemon #ffff00
orange #ffa500
>

Ierați peste două liste de aceeași dimensiune într-o singură buclă cu funcția zip ()

A = ["a", "b", "c"]
B = ["a", "d", "e"]

for a, b in zip(A, B):
  print a, b, a == b
  

Ieșire:

>
a a True
b d False
c e False
>

Repetați o listă și obțineți indexul corespunzător cu funcția enumerate ()

A = ["this", "is", "something", "fun"]

for index,word in enumerate(A):
    print(index, word)

Ieșire:

>
0 this
1 is
2 something
3 fun
>

Un caz de utilizare obișnuit este repetarea unui dicționar:

for name, phonenumber in contacts.items():
  print(name, "is reachable under", phonenumber)

Dacă aveți absolut nevoie să accesați indexul curent al iterației dvs., faceți NU utilizare range(len(iterable))! Aceasta este o practică extrem de proastă și vă va oferi o mulțime de chicote de la dezvoltatorii Python de vârf. Utilizați funcția încorporată enumerate() in schimb:

for index, item in enumerate(shopping_basket):
  print("Item", index, "is a", item)

pentru / else afirmații

Pyhton vă permite să utilizați else cu pentru bucle, cazul else este executat atunci când niciuna dintre condițiile din corpul buclei nu a fost îndeplinită. Pentru a folosi celălalt pe care trebuie să-l folosim break declarație, astfel încât să putem ieși din buclă într-o condiție satsfied. Dacă nu izbucnim, atunci partea de altă parte va fi executată.

week_days = ['Monday','Tuesday','Wednesday','Thursday','Friday']
today = 'Saturday'
for day in week_days:
  if day == today:
    print('today is a week day')
    break
else:
  print('today is not a week day')

În cazul de mai sus, ieșirea va fi today is not a week day întrucât pauza din buclă nu va fi executată niciodată.

Repetați o listă utilizând funcția de buclă inline

De asemenea, am putea itera în linie folosind python, de exemplu, dacă trebuie să majusculăm toate cuvintele dintr-o listă dintr-o listă, am putea face pur și simplu următoarele:

A = ["this", "is", "awesome", "shinning", "star"]

UPPERCASE = [word.upper() for word in A]
print (UPPERCASE)

Ieșire:

>
['THIS', 'IS', 'AWESOME', 'SHINNING', 'STAR']
>

Mai multe informatii: