🔁 Cikli
Cikli ļauj atkārtoti izpildīt koda bloku. Python piedāvā for un while ciklus, kā arī spēcīgu sarakstu sapratni (list comprehension).
for cikls
Teksts
# Iterē pār jebkuru iterable objektu
augļi = ["ābols", "bumbieris", "ķirsis"]
for auglis in augļi:
print(auglis)
# ābols
# bumbieris
# ķirsis
# Iterē pār virkni
for burts in "Python":
print(burts, end=" ") # P y t h o n
# Iterē pār vārdnīcu
novērtējumi = {"Anna": 9, "Jānis": 7, "Liga": 10}
for vārds in novērtējumi: # Atslēgas
print(vārds)
for vārds, atzīme in novērtējumi.items(): # Atslēgas un vērtības
print(f"{vārds}: {atzīme}")
# Iterē pār kopu
unikāli = {1, 3, 5, 7}
for n in unikāli:
print(n)
range()
Teksts
# range(stop) – no 0 līdz stop-1
for i in range(5):
print(i) # 0, 1, 2, 3, 4
# range(start, stop)
for i in range(1, 6):
print(i) # 1, 2, 3, 4, 5
# range(start, stop, step)
for i in range(0, 20, 5):
print(i) # 0, 5, 10, 15
# Atpakaļ skaitīšana
for i in range(10, 0, -1):
print(i) # 10, 9, 8 ... 1
# Klasiskais skaitītājs (kā C-style for)
for i in range(len(augļi)):
print(f"{i}: {augļi[i]}")
# 0: ābols
# 1: bumbieris
# 2: ķirsis
enumerate() un zip()
Teksts
# enumerate() – elements + indekss vienlaicīgi
dziesmas = ["Bohemian Rhapsody", "Hotel California", "Stairway to Heaven"]
for i, dziesma in enumerate(dziesmas, start=1): # start=1, lai sāktu no 1
print(f"{i}. {dziesma}")
# 1. Bohemian Rhapsody
# 2. Hotel California
# 3. Stairway to Heaven
# zip() – iterē vairākas virknes paralēli
vārdi = ["Anna", "Jānis", "Kārlis"]
vecumi = [25, 30, 22]
for vārds, vecums in zip(vārdi, vecumi):
print(f"{vārds} ir {vecums} gadi")
# Anna ir 25 gadi
# Jānis ir 30 gadi
# Kārlis ir 22 gadi
# zip() apstājas pie īsākās
a = [1, 2, 3, 4]
b = ["a", "b"]
for x, y in zip(a, b):
print(x, y)
# 1 a
# 2 b
# zip_longest aizpilda trūkstošo
from itertools import zip_longest
for x, y in zip_longest(a, b, fillvalue="?"):
print(x, y)
# 1 a 2 b 3 ? 4 ?
while cikls
Teksts
# while – izpilda, kamēr nosacījums ir True
skaitītājs = 0
while skaitītājs < 5:
print(skaitītājs)
skaitītājs += 1
# 0, 1, 2, 3, 4
# Bezgalīga cilpa ar break
import random
while True:
uzminēts = random.randint(1, 10)
print(f"Uzminēts: {uzminēts}")
if uzminēts == 7:
print("Atrasts 7!")
break
# Lietotāja ievade (pamata validācija)
while True:
ievade = input("Ievadi pozitīvu skaitli: ")
if ievade.isdigit() and int(ievade) > 0:
skaitlis = int(ievade)
break
print("Lūdzu ievadi derīgu skaitli!")
print(f"Tu ievadīji: {skaitlis}")
break, continue, else
Teksts
# break – pārtrauc cilpu
for i in range(10):
if i == 5:
break
print(i) # 0, 1, 2, 3, 4
# continue – izlaiž šo iterāciju
for i in range(10):
if i % 2 == 0:
continue # Izlaižam pāra skaitļus
print(i) # 1, 3, 5, 7, 9
# else uz cikla – izpildās, JA cikls nebeidzās ar break
for i in range(2, 10):
for j in range(2, i):
if i % j == 0:
print(f"{i} = {j} * {i // j}")
break
else:
print(f"{i} ir pirmskaitlis")
# 2 ir pirmskaitlis
# 3 ir pirmskaitlis
# 4 = 2 * 2
# 5 ir pirmskaitlis
# ...
# Praktisks piemērs – meklēšana sarakstā
studenti = ["Anna", "Jānis", "Kārlis", "Marta"]
meklē = "Kārlis"
for students in studenti:
if students == meklē:
print(f"{meklē} atrasts!")
break
else:
print(f"{meklē} nav sarakstā")
List Comprehension
Kompakts veids, kā veidot sarakstus. Bieži vien ātrāks par parasto cilpu.
💡 Comprehension vs. cilpa
Izmanto comprehension, kad kods paliek lasāms. Ja loģika ir sarežģīta, labāk ir parasta for cilpa ar append().
Teksts
# Pamata sintakse: [izteiksme for elements in iterable]
# Kvadrāti no 0 līdz 9
kvadrāti = [x**2 for x in range(10)]
print(kvadrāti) # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
# Ar nosacījumu: [izteiksme for elements in iterable if nosacījums]
pāra = [x for x in range(20) if x % 2 == 0]
print(pāra) # [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
# Transformācija
vārdi = ["anna", "jānis", "kārlis"]
lielie = [v.capitalize() for v in vārdi]
print(lielie) # ["Anna", "Jānis", "Kārlis"]
# Filtrs
garumā = [v for v in vārdi if len(v) > 4]
print(garumā) # ["jānis", "kārlis"]
# Ligzdota for
pāri = [(x, y) for x in range(3) for y in range(3) if x != y]
print(pāri)
# [(0, 1), (0, 2), (1, 0), (1, 2), (2, 0), (2, 1)]
# Dict comprehension
kvadrātu_vārd = {x: x**2 for x in range(6)}
print(kvadrātu_vārd) # {0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25}
# Set comprehension
unikālie_garum = {len(v) for v in vārdi}
print(unikālie_garum) # {4, 5, 6}
# Generator expression (ar iekavām – ekonomē atmiņu)
summa = sum(x**2 for x in range(1000000))
print(summa)