For-each tsükkel

For-each tsükli puhul omandab tsüklimuutuja (control variable) igal iteratsioonil itereeritava jada ühe elemendi väärtuse kuni kõik elemendid on läbi käidud. Kui tegemist on järjestatud jadaga (nt järjend, ennik, sõne), siis käiakse elemendid läbi vastavalt nende järjestusele. Järjestamata jada puhul (nt hulk) omandab tsüklimuutuja elementide väärtusi suvalises järjekorras. For-each tsüklit kasutatakse enamasti olukordades, kus soovitakse lihtsalt kõik elemendid läbi itereerida ning nende asukoht jadas (indeks) ei ole kasutaja jaoks oluline.

Omadused:

  • Elemendi asukoht jadas (indeks) ei ole kättesaadav;

  • Tsüklimuutuja (control variable) omandab otse elemendi väärtuse;

  • Itereerib üle kõikide etteantud jada elementide;

  • Saab itereerida ka üle järjestamata jadade (hulk) või indekseerimata andmestruktuuride (sõnastik) elementide.

Süntaks:
for control_variable in statement:
    # Your code

Kus control_variable on vabalt valitav tsüklimuutuja nimi ning statement jada, mille üle soovitakse itereerida.

For-each tsükkel, mis väljastab kõik tähed etteantud sõnes (sõne puhul itereeritakse üle tema tähemärkide):
greeting = "Hello"
for letter in greeting:
    print(letter)

# H
# e
# l
# l
# o
For-each tsükkel, mis väljastab kõik arvud etteantud järjendis (järjendi puhul itereeritakse üle tema elementide):
some_list = [5, 2, 8]
for element in some_list:
    print(element)

# 5
# 2
# 8
For-each tsükkel, mis väljastab kõik sõned etteantud ennikus (enniku puhul itereeritakse üle tema elementide):
some_tuple = ("Iterate", "Over", "Me")
for el in some_tuple:
    print(el)

# "Iterate"
# "Over"
# "Me"
Sõnastike (dictionary) puhul saab itereerida võtmete key ja väärtuste value järgi:
some_dict = {"one": 1, "two": 2}
for key in some_dict:

    # By default the loop iterates over keys
    print(key, end=" ")  # --> one two

# But we can also iterate over values
for val in some_dict.values():

    print(val, end=" ")  # --> 1 2

# And even over both keys and valuess simultaneously
for key, value in some_dict.items():
    print(key, value)

# one 1
# two 2

Objekti, mille järgi saab itereerida, nimetatakse iteratiivseks objektiks.

Samuti on võimalik itereerida üle faili ridade:
with open("text.txt") as file:
    for line in file:
        print(line):

Python'is on palju sisseehitatud funktsioone, mis võtavad argumendiks iteratiivset objekti: näiteks list(), "".join() jm.

>>> ",".join(["a", "b", "c"])
'a,b,c'
>>> ",".join({"x": 1, "y": 2})
'y,x'
>>> list("python")
['p', 'y', 't', 'h', 'o', 'n']
>>> list({"x": 1, "y": 2})
['y', 'x']