makaleler / Python Programlama / Python For Döngüsü

Python For Döngüsü

18.09.2014 11:09:46

For Loop döngüleri, Liste veya dizeleri öğeleri üzerinde yineleme olanağı sağlar.

Diziler birden fazla elamanı bir araya getiren adreslerdir. Bir dizi sırasıyla öğlerini işleme koyar ve son öğeye kadar ifade bloğunu işleme koyar.


Ne zaman For Loop döngüsü kullanılmalı.

N defa kod tekrarlanması istenildiğinde döngüler geleneksel olarak kullanılır. Koşul yerine getirildiği sürece döngü devam edecektir.


Akış Diyagramı


Python for loop
Örnekler
#!/usr/bin/python

for karakter in 'Pythontr':     # ilk ornek
   print 'harf harf :',karakter

meyveler = ['elma', 'muz',  'portakal', 'mandalina']
for meyve in meyveler:        # ikinci ornek
    print 'Meyve :', meyve

Yukarıdaki kod çalıştırıldığında aşağıdaki sonucu verir:

harf harf : P
harf harf : y
harf harf : t
harf harf : h
harf harf : o
harf harf : n
harf harf : t
harf harf : r
Meyve : elma
Meyve : muz
Meyve : portakal
Meyve : mandalina


Dizi indexi tarafından yineleme

Bu örnek dizinin elemanlarına erişim için alternatif bir yol izler. Dizin erişimi ofsetine göre yapılır. Aşağıdaki örneğe bakınız.


#!/usr/bin/python

meyveler = ['elma', 'muz',  'portakal', 'mandalina']
for index in range(len(meyveler)):
   print 'Su andaki meyve:', meyveler[index]

Yukarıdaki kod yürütüldüğünde aşağıdaki sonucu verir:

Su andaki meyve: elma
Su andaki meyve: muz
Su andaki meyve: portakal
Su andaki meyve: mandalina

Yukarıdaki örneğimizde yineleme işleminin gerçek sırasını range ile toplam dizi sayısını len fonksiyonuyla bularak yapıyoruz.


Döngülerle birlikte else deyimini kullanma


Python döngüler de else kullanımına destekler.
  • Else deyimi for döngüsü ile kullanılması durumunda döngü listesinde ilerlerken tükendiği zaman, else deyimi yürütülür.

  • Else deyimi bir while döngüsü ile kullanılırsa, else ifadesi koşul yanlış olurca yürütülür.


#!/usr/bin/python

for num in range(10,20):  # 10 ila 20 arasindaki sayilarii dondur
   for i in range(2,num): # sayi faktorlerini yineler
      if num%i == 0:      # ilk faktoru belirler
         j=num/i          # ikinci faktoru belirler
         print '%d esittir %d * %d' % (num,i,j)
         break # Bir sonraki numaraya gecmek icin
   else:                  # else dongunun bir parcasi
      print num, ' bir asal sayi'

Yukarıdaki kod yürütüldüğünde aşağıdaki sonucu verir:

10 esittir 2 * 5
11 bir asal sayi
12 esittir 2 * 6
13 bir asal sayi
14 esittir 2 * 7
15 esittir 3 * 5
16 esittir 2 * 8
17 bir asal sayi
18 esittir 2 * 9
19 bir asal sayi

Örneğin 0 den 2 ye kadar devam edecek kod parçacağı yazalım.


for x in range(0, 3):
    print "Deger %d" % (x)

Örneğin sonsuza kadar tekrar edecek bir kod yazalım, bu örneğimiz While Loop örneği olsun.


x = 1
while True:
    print "Değer %d" % (x)
    x += 1

Görüldüğü üzere farklı değerler üzerinde döngülerimizi oluşturabiliriz. Sonsuz döngümüzdeki değerleri yakalayabilmek için aslında büyük değerlerde verebilirdik fakat gereksiz bir işlem olur.


For Loop Nasıl Çalışır?

Döngü şartını sağladığı sürece aktif olarak çalışacaktır son bulması için döngü şartını sağlamaması gerekir.


İç içe döngüler

Aslında özetle x değeri üzerinde y değerleri erişimi için kullanılır.


range ve xrange

Python'da bir dizi sayı elde etmenin iki yolu vardır: range ve xrange. Genellikle programcılar arasında range daha yaygın bilinir. Fakat xrange fonksiyonu C programlama dili ile yazılmıştır kaynak yönetimi daha iyidir ve uzun listelerde daha hızlı çalışmaktadır. Kısa listelerde range fonksiyonunu tercih edebilirsiniz.


Python For döngüsü örnekleri


İç içe döngüler
for x in xrange(1, 11):
    for y in xrange(1, 11):
        print '%d * %d = %d' % (x, y, x*y)

Döngüden erken çıkış
for x in xrange(3):
    if x == 1:
        break

For:Else
for x in xrange(3):
    print x
else:
    print 'Sonuc x = %d' % (x)

Bir string (Iterable) dizeler
string = "Merhaba Dünya!"
for x in string:       
    print x

Bir string (Iterable) listesi
collection = ['Merhaba', 5, 'd']
for x in collection:   
    print x  

Listeden liste
list_of_lists = [ [1, 2, 3], [4, 5, 6], [7, 8, 9]]
for list in list_of_lists:
    for x in list:  
        print x

Kendi Iterable listesi olusturan bir nesne yazalım
class Iterable(object):
           
    def __init__(self,values):
        self.values = values
        self.location = 0
           
    def __iter__(self):
        return self 
           
    def next(self): 
        if self.location == len(self.values):
            raise StopIteration
        value = self.values[self.location]
        self.location += 1
        return value


range ve xrange time testi
import time       
                  
#use time.time() on Linux
                  
start = time.clock()  
for x in range(10000000):
    pass          
stop = time.clock()
                  
print stop - start
                  
start = time.clock()  
for x in xrange(10000000):
    pass          
stop = time.clock()
                  
print stop - start

Küçük listelerde range ve xrange zaman ölçümü


import time            
                       
#use time.time() on Linux
                       
start = time.clock()   
                       
for x in range(1000):  
    pass               
stop = time.clock()    
                       
print stop-start       
                       
start = time.clock()   
for x in xrange(1000): 
    pass               
stop = time.clock()    
                       
print stop-start

Görüldüğü üzere küçük listelerde range fonksiyonu daha kısa sürüyor.



Kendi range fonksiyonumuzu yazalım
def my_range(start, end, step):
    while start <= end:
        yield start  
        start += step
           
for x in my_range(1, 10, 0.5):
    print x

Python While Döngüsü /makale/python-while-dongusu-259
Kaynak: https://wiki.python.org/moin/ForLoop [wiki.python.org]

yazar husonet

Yorumlar

Bu içerik için sizde yorum yapabilirsiniz!
anasayfa | makaleler | haberler | dosyalar | linkler | hakkımızda