[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"blog-post-python-donguleri-for-while-ve-iterator-ornekleri":3},{"dataItem":4,"heading":36,"metaData":38,"schema":81},["Reactive",5],{"id":6,"title":7,"summary":8,"content":9,"seo_title":10,"seo_description":11,"seo_keywords":12,"slug":13,"createdAt":14,"updatedAt":14,"blog_categories":15,"authors":19,"image":24,"thumb":25,"image_webp":26,"thumb_webp":27,"rating":28,"heading_title":7,"heading_sub_title":17,"readingTime":29,"url":34,"comments":35,"meta_cover":24},27670,"Python Döngüleri: For, While ve İteratör Örnekleri","Bu makale Python'da for ve while döngülerinin temel kullanımını, enumerate ve while-else gibi yapıları ile iter(), next() ve yield tabanlı jeneratör örneklerini pratik python kod snippetleri eşliğinde açıklar.","\u003Ch2>Giriş\u003C/h2>\n\u003Cp>Python'da veri üzerinde yineleme (iteration) günlük programlamada sık kullanılır. Bu rehberde \u003Cstrong>for\u003C/strong> ve \u003Cstrong>while\u003C/strong> döngülerinin temel ve ileri kullanım örneklerini, \u003Cstrong>enumerate\u003C/strong>, \u003Cstrong>iter()\u003C/strong>, \u003Cstrong>next()\u003C/strong> ve \u003Cstrong>yield\u003C/strong> ile oluşturulan jeneratörlerin pratik kullanımını göreceksiniz. Örnekler, kısa ve doğrudan uygulama amaçlıdır; örnek kodlar okunaklı olması için metin içinde gösterilmiştir.\u003C/p>\n\n\u003Ch2>For döngüsü: Temel kullanım ve enumerate örnekleri\u003C/h2>\n\u003Cp>For döngüsü, sıralı veri yapılarını (list, tuple, string, range vb.) dolaşmak için kullanılır. Sıklıkla indeks ve değeri aynı anda gerektiğinde \u003Cstrong>enumerate\u003C/strong> tercih edilir.\u003C/p>\n\n\u003Ch3>Basit for örneği\u003C/h3>\n\u003Cblockquote>nums = [10, 20, 30]\u003Cbr>for n in nums:\u003Cbr>    print(n)\u003C/blockquote>\n\u003Cp>Açıklama: Yukarıdaki kod listedeki her öğeyi sırayla yazdırır.\u003C/p>\n\n\u003Ch3>Enumerate ile indeks ve değer\u003C/h3>\n\u003Cblockquote>words = ['elma', 'armut', 'muz']\u003Cbr>for i, w in enumerate(words):\u003Cbr>    print(i, w)\u003C/blockquote>\n\u003Cp>İsterseniz başlangıç indeksini değiştirebilirsiniz:\u003C/p>\n\u003Cblockquote>for i, w in enumerate(words, start=1):\u003Cbr>    print(i, w)\u003C/blockquote>\n\u003Cp>Bu yaklaşım, döngü içinde indeksle birlikte değere ihtiyaç duyduğunuz her durumda daha temiz ve güvenli bir yapıdır.\u003C/p>\n\n\u003Ch3>Dictionary üzerinde iterasyon\u003C/h3>\n\u003Cblockquote>d = {'a': 1, 'b': 2}\u003Cbr>for k in d:  # anahtarlar üzerinde iterasyon\u003Cbr>    print(k, d[k])\u003Cbr>for k, v in d.items():  # anahtar-değer çifti\u003Cbr>    print(k, v)\u003C/blockquote>\n\n\u003Ch2>While döngüsü ve while-else kullanımı\u003C/h2>\n\u003Cp>\u003Cstrong>While\u003C/strong> döngüsü, bir koşul doğru olduğu sürece tekrarlama yapar. Döngü sonlandığında opsiyonel \u003Cstrong>else\u003C/strong> bloğu çalışır; ancak döngü \u003Cstrong>break\u003C/strong> ile erken sonlandırılırsa \u003Cem>else\u003C/em> çalışmaz.\u003C/p>\n\n\u003Ch3>While örneği\u003C/h3>\n\u003Cblockquote>i = 0\u003Cbr>while i &lt; 3:\u003Cbr>    print(i)\u003Cbr>    i += 1\u003Cbr>else:\u003Cbr>    print('Döngü tamamlandı')\u003C/blockquote>\n\u003Cp>Bu kod, i 3 olana kadar sayar ve döngü doğal olarak bittiğinde else bloğu çalışır.\u003C/p>\n\n\u003Ch3>Break ile else atlanması\u003C/h3>\n\u003Cblockquote>i = 0\u003Cbr>while i &lt; 5:\u003Cbr>    if i == 2:\u003Cbr>        break\u003Cbr>    print(i)\u003Cbr>    i += 1\u003Cbr>else:\u003Cbr>    print('Bu mesaj break ile sonlanmadığında görünür')\u003C/blockquote>\n\u003Cp>Burada i 2 olduğunda döngü \u003Cstrong>break\u003C/strong> ile kesildiği için \u003Cem>else\u003C/em> çalışmayacaktır. Bu davranış döngü akışını kontrol etmek için kullanışlıdır.\u003C/p>\n\n\u003Ch2>İteratörler: iter(), next() ve StopIteration\u003C/h2>\n\u003Cp>İteratörler, bir koleksiyondaki öğelere tek tek erişim sağlayan nesnelerdir. Bir nesneden iteratör elde etmek için \u003Cstrong>iter()\u003C/strong> kullanılır; öğeleri almak için ise \u003Cstrong>next()\u003C/strong> çağrılır. Tüm öğeler tükendiğinde Python \u003Cstrong>StopIteration\u003C/strong> istisnasını fırlatır. Bu mekanizma Python'un resmi belgelerinde iteratör nesneleri olarak açıklanır (bkz. \u003Ca href=\"https://docs.python.org/tr/3/c-api/iterator.html\">Python 3.14.3 dokümantasyonu\u003C/a>).\u003C/p>\n\n\u003Ch3>Manuel iterator kullanımı\u003C/h3>\n\u003Cblockquote>lst = [1, 2, 3]\u003Cbr>it = iter(lst)\u003Cbr>print(next(it))  # 1\u003Cbr>print(next(it))  # 2\u003Cbr>print(next(it))  # 3\u003Cbr>try:\u003Cbr>    print(next(it))  # StopIteration fırlatır\u003Cbr>except StopIteration:\u003Cbr>    print('İterasyon tamamlandı')\u003C/blockquote>\n\u003Cp>Pratik olarak for döngüsü bu mekanizmayı arka planda yönetir, ancak bazı durumlarda manuel kontrol (ör. birden fazla iterator paralel tüketme) gereklidir.\u003C/p>\n\n\u003Ch2>Jeneratörler: yield ve jeneratör ifadeleri\u003C/h2>\n\u003Cp>Jeneratörler, \u003Cstrong>yield\u003C/strong> anahtar kelimesiyle oluşturulan özel fonksiyonlardır. Jeneratörler her seferinde bir öğe üretir ve işlem ihtiyaç duyulana kadar bellek üzerinde tüm veriyi tutmaz; bu da büyük veri setleriyle çalışırken bellek verimliliği sağlar.\u003C/p>\n\n\u003Ch3>Basit jeneratör fonksiyonu\u003C/h3>\n\u003Cblockquote>def say_ileri(n):\u003Cbr>    i = 0\u003Cbr>    while i &lt; n:\u003Cbr>        yield i\u003Cbr>        i += 1\u003Cbr>for x in say_ileri(5):\u003Cbr>    print(x)\u003C/blockquote>\n\u003Cp>Yukarıdaki fonksiyon her çağrıldığında bir sonraki değeri döndürür; fonksiyonun tüm sonuçlarını belleğe almak yerine gerektiği kadar tüketebilirsiniz.\u003C/p>\n\n\u003Ch3>Jeneratör ifadeleri (generator expressions)\u003C/h3>\n\u003Cblockquote>squares = (x * x for x in range(10))\u003Cbr>for s in squares:\u003Cbr>    print(s)\u003C/blockquote>\n\u003Cp>Parantez içindeki yapı, liste oluşturmak yerine jeneratör döndürür; bu da büyük aralıklar için daha az bellek kullanımı demektir.\u003C/p>\n\n\u003Ch3>next() ile jeneratör tüketmek\u003C/h3>\n\u003Cblockquote>g = (i for i in range(3))\u003Cbr>print(next(g))  # 0\u003Cbr>print(next(g))  # 1\u003Cbr>print(next(g))  # 2\u003Cbr># next(g) artık StopIteration fırlatır\u003C/blockquote>\n\n\u003Ch2>Pratik ipuçları ve kontrol listesi (checklist)\u003C/h2>\n\u003Cul>\n  \u003Cli>Koleksiyon üzerinde basit dolaşım için for kullanın; indeks gerekiyorsa enumerate tercih edin.\u003C/li>\n  \u003Cli>Koşula dayalı tekrarlar için while kullanın, fakat sonsuz döngülerden kaçınmak için koşul ve artış/azalış mantığını açık tutun.\u003C/li>\n  \u003Cli>Büyük veri veya akış tabanlı okumalarda jeneratör kullanarak bellek tasarrufu sağlayın.\u003C/li>\n  \u003Cli>iter() ve next() ile manuel tüketim gerekiyorsa StopIteration için try/except kullanın veya next(it, varsayılan) biçimini tercih edin.\u003C/li>\n  \u003Cli>Bir döngüyü break ile erken sonlandırdığınızda \u003Cem>else\u003C/em> bloğunun çalışmayacağını unutmayın; bunu akış kontrolü için kullanabilirsiniz.\u003C/li>\n\u003C/ul>\n\n\u003Ch2>Örnek: Dosya satırlarını jeneratörle işleme\u003C/h2>\n\u003Cp>Büyük bir dosyayı belleğe tamamen almadan satır satır işlemek için jeneratörleri kullanabilirsiniz. Aşağıdaki örnek, dosyayı açıp satırları filtreleyen basit bir yaklaşımı gösterir.\u003C/p>\n\u003Cblockquote>def satir_filtrele(dosya_yolu):\u003Cbr>    with open(dosya_yolu, 'r', encoding='utf-8') as f:\u003Cbr>        for line in f:\u003Cbr>            line = line.strip()\u003Cbr>            if line:  # boş olmayan satırlar\u003Cbr>                yield line.lower()\u003Cbr>\n# Kullanım\u003Cbr>for satir in satir_filtrele('büyük_dosya.txt'):\u003Cbr>    işlem(satir)\u003C/blockquote>\n\u003Cp>Bu örnekte dosya satırları tek tek okunduğu için bellek kullanımı düşük kalır ve işlem hattına kolayca entegre edilebilir.\u003C/p>\n\n\u003Ch2>Sık yapılan hatalar ve dikkat edilmesi gerekenler\u003C/h2>\n\u003Cul>\n  \u003Cli>Listeyi döngü sırasında değiştirmek beklenmeyen sonuçlara yol açabilir; gerekiyorsa kopya alın veya comprehension kullanın.\u003C/li>\n  \u003Cli>while döngüsünde koşulun değiştiğinden emin olun; aksi takdirde döngü sonsuz döngüye girer.\u003C/li>\n  \u003Cli>next() kullanırken StopIteration ile karşılaşılacağını göz önünde bulundurun; alternatif olarak \u003Ccode>next(it, varsayılan)\u003C/code> kullanımını tercih edebilirsiniz.\u003C/li>\n\u003C/ul>\n\n\u003Chr>\n\u003Ch2>Sonuç\u003C/h2>\n\u003Cp>For ve while döngüleri Python'un temel araçlarıdır; enumerate, iter(), next() ve yield gibi yapılar ise yinelemeyi daha esnek ve verimli hale getirir. Jeneratörler, özellikle büyük veri ile çalışırken bellek avantajı sağlar. Daha ayrıntılı teknik bilgi için Python'un resmi dokümantasyonuna bakabilirsiniz: \u003Ca href=\"https://docs.python.org/tr/3/c-api/iterator.html\">Python 3.14.3 - Iterator Objects\u003C/a>.\u003C/p>","Python Döngüleri: For, While ve İteratör Örnekleri | python ","Python'da for ve while döngülerinin nasıl kullanıldığını, enumerate, iter(), next() ve yield ile oluşturulan jeneratör örneklerini pratik python kod snippetleri","python kod snippetleri, for enumerate örnekleri, while else kullanımı, iterator next, generator örnekleri","python-donguleri-for-while-ve-iterator-ornekleri","2026-04-13T14:59:34.000Z",{"id":16,"title":17,"slug":18},214,"Python Döngüleri","python-donguleri",{"id":20,"name":21,"nickname":22,"slug":23},93,"Onur Tekin","CodeCraftsman","onur-tekin","/media/blog/946e8851814d7b209d2aa646921626b1.jpg","/media/blog/946e8851814d7b209d2aa646921626b1_thumb.jpg","/media/blog/946e8851814d7b209d2aa646921626b1.webp","/media/blog/946e8851814d7b209d2aa646921626b1_thumb.webp",null,{"minutes":30,"wordCount":31,"imageCount":32,"formatted":33},4,778,0,"4 dk okuma süresi","/blog/python-donguleri/python-donguleri-for-while-ve-iterator-ornekleri",[],["Reactive",37],{"title":7,"subTitle":17,"image":24},["Reactive",39],{"title":10,"meta":40,"link":75},[41,43,45,48,51,54,57,60,63,66,69,71,73],{"hid":42,"name":42,"content":11},"description",{"hid":44,"name":44,"content":12},"keywords",{"hid":46,"name":46,"content":47},"author","Başlangıç Seviyesi Kod & Snippet Rehberi",{"hid":49,"name":49,"content":50},"robots","index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1",{"hid":52,"property":52,"content":53},"og:type","website",{"hid":55,"property":55,"content":56},"og:title","Başlangıç Kod & Snippet Rehberi | KodÖğreniyorum",{"hid":58,"property":58,"content":59},"og:description","Yeni başlayanlara yönelik kısa kod örnekleri, snippet'ler ve adım adım alıştırmalar. Hızlı uygulamalarla temel programlama mantığını pekiştir.",{"hid":61,"property":61,"content":62},"og:image","https://kodogreniyorum.com/media/blog/946e8851814d7b209d2aa646921626b1.jpg",{"hid":64,"property":64,"content":65},"og:url","https://kodogreniyorum.com/blog/python-donguleri/python-donguleri-for-while-ve-iterator-ornekleri",{"hid":67,"name":67,"content":68},"twitter:card","summary_large_image",{"hid":70,"name":70,"content":56},"twitter:title",{"hid":72,"name":72,"content":59},"twitter:description",{"hid":74,"name":74,"content":62},"twitter:image",[76,78],{"rel":77,"href":65},"canonical",{"rel":79,"href":80},"amphtml","https://amp.kodogreniyorum.com/blog/python-donguleri/python-donguleri-for-while-ve-iterator-ornekleri",["Reactive",82],{"@context":83,"@graph":84},"https://schema.org",[85,98],{"@type":86,"headline":10,"image":62,"author":87,"publisher":90,"datePublished":14,"dateModified":14,"mainEntityOfPage":96,"description":11},"BlogPosting",{"@type":88,"name":21,"url":89},"Person","https://kodogreniyorum.com/yazarlar/onur-tekin",{"@type":91,"name":47,"logo":92},"Organization",{"@type":93,"url":94,"width":95,"height":95},"ImageObject","https://kodogreniyorum.com/img/icons/favicon.png",32,{"@type":97,"@id":65},"WebPage",{"@type":99,"itemListElement":100},"BreadcrumbList",[101,106,110,113],{"@type":102,"position":103,"name":104,"item":105},"ListItem",1,"Ana Sayfa","https://kodogreniyorum.com",{"@type":102,"position":107,"name":108,"item":109},2,"Blog","https://kodogreniyorum.com/blog",{"@type":102,"position":111,"name":17,"item":112},3,"https://kodogreniyorum.com/blog/python-donguleri",{"@type":102,"position":30,"name":7,"item":65}]