Menu

Python for Döngüleri: Listeler, Stringler, Range ve Dict Üzerinde İterasyon

Python'daki for döngüsü nasıl çalışır — listeler, stringler, range'ler, sözlükler ve iterable olan her şey üzerinde dolaşmak, ayrıca break, continue ve else.

Python'un for Döngüsü "for each" Demektir

C tarzı bir dil kullandıysan, Python'un for döngüsü sana farklı görünecek. Burada for (i = 0; i < n; i++) şeklinde bir sayaç kalıbı yok. Python'un for'u sıkı sıkıya bir for each döngüsüdür: ona bir koleksiyon verirsin, o da sana elemanları tek tek uzatır.

main.py
Output
Click Run to see the output here.

Bu üç satır yazdırır. Python listeyi okur, her elemanı sırayla çıkarır ve gövde çalışırken onu color'a bağlar. Geride bir şey kalmadığında döngü biter.

Biçime dikkat et — for <isim> in <iterable>: ve altında girintili bir gövde. Girinti, iki nokta, gövde; tıpkı if'teki yapı.

Neler Iterable Sayılır

Pratikte bir dizi değer tutan hemen her şey. Listeler, tuple'lar, stringler, range'ler, dict'ler, set'ler, dosyalar ve yazacağın çoğu özel nesne.

main.py
Output
Click Run to see the output here.

Tek söz dizimi, pek çok veri biçimi — işte güzel tarafı bu.

range() ile Saymak

Bir sayaca ihtiyaç duyduğunda — "bunu on kez yap" ya da "0'dan 9'a indexler üzerinde dolaş" — range() kullanırsın:

main.py
Output
Click Run to see the output here.

Bu 0, 1, 2, 3, 4 yazdırır. range(stop) 0'dan başlar ve stop'a kadar sayar ama onu dahil etmez. range(start, stop) başlangıç değerini ayarlamanı sağlar; range(start, stop, step) ise adım boyunu kontrol eder:

main.py
Output
Click Run to see the output here.

range konusuna ayrılmış bir sayfa yakında gelecek çünkü biraz daha derin anlamaya değer. Şimdilik, range(n) sana 0'dan n-1'e kadar numaralı n iterasyon verir.

Python enumerate: Index ile Döngü Kurmak

Yaygın bir ihtiyaç: "hem index'i hem de değeri birlikte istiyorum." Yeni başlayanların ilk içgüdüsü range(len(...)) kullanmak olur ama Python'un daha şık bir aracı var:

main.py
Output
Click Run to see the output here.

enumerate() (index, value) çiftleri üretir. for'dan sonraki çift değişken, çifti iki isme paket açıp atar — index ve color. Bu şundan çok daha temiz:

main.py
Output
Click Run to see the output here.

0 yerine 1'den saymaya başlamak istersen start=1 geç:

main.py
Output
Click Run to see the output here.

Python zip: İki Dizi Üzerinde Birlikte İterasyon

Eşit uzunlukta iki listen varsa ve onları eşleştirmek istiyorsan:

main.py
Output
Click Run to see the output here.

zip en kısa dizide durur. Devam edip None ile doldurmasını istersen itertools.zip_longest kullan.

Bir Dict Üzerinde İterasyon

Sözlükler sana neyin üzerinde döngü kuracağın konusunda seçenek sunar:

main.py
Output
Click Run to see the output here.

Çoğu zaman istediğin .items() olur — anahtarı ve değeri tek bir okunaklı satırda birlikte alırsın.

break ve continue

Bazen erken çıkmak ya da bir iterasyonu atlamak istersin.

break döngüden hemen çıkar:

main.py
Output
Click Run to see the output here.

6'dan büyük bir sayı bulunur bulunmaz döngü durur. Kalan elemanlar görmezden gelinir.

continue mevcut iterasyonun geri kalanını atlar ve sıradakine geçer:

main.py
Output
Click Run to see the output here.

İkisini de kullanmakta sakınca yok; ancak birden fazla continue varsa döngü izlemesi zorlaşabilir. Çoğu zaman basit bir if/else daha iyi okunur.

Döngünün else Bloğu

Python'un çoğu dilde olmayan bir özelliği var: döngülerde bir else bloğu. Döngü bir break'e takılmadan tamamlandığında çalışır.

main.py
Output
Click Run to see the output here.

Kullanışlı, ama başta kafa karıştırıcı. Kullanmak zorunda hissetme — döngü dışında bir boolean bayrak, yeni okuyucular için genellikle daha nettir.

İterasyon Sırasında Listeyi Değiştirmek

Dikkat edilmesi gereken bir tuzak: üzerinde döngü kurduğun bir listeye eleman ekleme ya da ondan eleman çıkarma. İterasyon, hangi index'lerin hâlâ geçerli olduğu konusunda kafası karışır ve ya eleman kaçırırsın ya da bir hata alırsın. Güvenli kalıp, yeni bir liste oluşturmaktır:

main.py
Output
Click Run to see the output here.

Veya alıştığında, bir list comprehension aynı şeyi tek satırda yapar — bunu Koleksiyonlar bölümünde göreceğiz.

Küçük Bir Uçtan Uca Örnek

Birkaç parçayı bir araya getir — listeyi oku, filtrele, numaralandır, yazdır:

main.py
Output
Click Run to see the output here.

Sırada: while Döngüleri

for, ne üzerinde iterasyon yaptığını bildiğinde doğru seçimdir. while ise bir koşul değişene kadar döngü kurmak istediğinde doğru seçimdir — sırada o var.

Sıkça Sorulan Sorular

Python'da for döngüsü nasıl çalışır?

for item in sequence: ifadesi, girintili gövdeyi dizideki her eleman için bir kez çalıştırır; item her seferinde sıradaki değeri alır. Diziler arasında listeler, tuple'lar, stringler, dict'ler, range'ler ve iteratör tanımlayan her nesne vardır.

break ile continue arasındaki fark nedir?

break döngüden hemen çıkar, kalan iterasyonları atlar. continue ise mevcut iterasyonun geri kalanını atlar ve bir sonrakine geçer. break "işim bitti" için, continue ise "bunu geç" içindir.

Python'da index ile nasıl döngü kurarım?

Diziyi enumerate(...) ile sar; böylece (index, value) çiftleri elde edersin: for i, item in enumerate(items):. Döngünün sonunda i += 1 ile kendi sayacını tutmaktan çok daha temiz olur.

Coddy ile kodlamayı öğren

BAŞLA