0Pricing
Python Academy · Ders

Üreteç İfadeleri

Kısa tembel işlem hatları yazın

Üreteç İfadeleri, CoddyKit'te ücretsiz bir Python Academy dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Python Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Python Academy kursu toplamda 4 dersten oluşur.

Liste Kavrama İfadesinden Üreteç İfadesine

Üreteç ifadesi, liste kavrama ifadesine benzer; ancak köşeli parantezler yerine normal parantezler kullanır. Listenin tamamını oluşturmak yerine değerleri tembel olarak üretir.

list_comp = [x * x for x in range(5)]
gen_expr = (x * x for x in range(5))
print(list_comp)
print(gen_expr)
print(list(gen_expr))

Bellek Farkı

Liste kavrama ifadesi her öğe için belleği en başta ayırır. Üreteç ifadesi, siz değer isteyene kadar neredeyse hiçbir şey tutmaz. Boyutlarını karşılaştırın.

import sys
lst = [x for x in range(10000)]
gen = (x for x in range(10000))
print('list bytes:', sys.getsizeof(lst))
print('gen bytes:', sys.getsizeof(gen))

Üreteç İfadesini Yineleme

Bir üreteç ifadesini her yineleyici gibi tüketirsiniz: for döngüsüyle, next() ile veya bir işleve geçirerek.

gen = (c.upper() for c in 'hello')
for ch in gen:
    print(ch)

if ile Filtreleme

Tıpkı bir kavrama ifadesinde olduğu gibi yalnızca eşleşen öğeleri tutmak için bir if yan tümcesi ekleyin.

evens = (n for n in range(10) if n % 2 == 0)
print(list(evens))

İşlevlere Doğrudan Geçirme

Bir üreteç ifadesi bir işleve verilen tek bağımsa fazladan parantezleri kaldırabilirsiniz. Bu kullanım temizdir ve geçici bir liste oluşturmanızı önler.

total = sum(x * x for x in range(5))
print(total)
biggest = max(len(w) for w in ['a', 'abc', 'ab'])
print(biggest)

Tek Kullanımlı Olmayı Hatırlayın

Bir üreteç ifadesi, tıpkı üreteç işlevi gibi tek geçişten sonra tükenir. İkinci yineleme hiçbir şey üretmez.

gen = (x for x in range(3))
print(list(gen))
print(list(gen))

İfadeleri Zincirleme

Tembel bir pipeline oluşturmak için bir üreteç ifadesini başka bir üreteç ifadesine aktarabilirsiniz. Son tüketici değerleri çekene kadar hiçbir şey hesaplanmaz.

nums = (n for n in range(10))
evens = (n for n in nums if n % 2 == 0)
doubled = (n * 2 for n in evens)
print(list(doubled))

any() ve all()

Üreteç ifadeleri any() ve all() ile özellikle etkilidir; çünkü kısa devre yaparak yanıt kesinleşir kesinleşmez durabilirler.

words = ['cat', 'dog', 'elephant']
print(any(len(w) > 5 for w in words))
print(all(len(w) >= 3 for w in words))

İç İçe Döngüler

Kavrama ifadeleri gibi üreteç ifadeleri de soldan sağa okunan birden çok for yan tümcesini destekler.

pairs = ((x, y) for x in range(2) for y in range(2))
print(list(pairs))

Tembel Pipeline Örneği

Burada küçük bir metin işleme pipeline'ı görülmektedir. Her aşama tembel olduğundan, çok büyük bir dosya tamamı belleğe yüklenmeden akış olarak işlenebilir.

lines = ['  alpha ', '', '  beta', 'gamma  ']
stripped = (line.strip() for line in lines)
nonempty = (line for line in stripped if line)
print(list(nonempty))

Hangisini Ne Zaman Seçmeli

Verilere birden çok kez ihtiyaç duyduğunuzda veya dizinleme yapmanız gerektiğinde liste kavrama ifadesini kullanın. Tek geçişli akış veya büyük veriler için üreteç ifadesini kullanın.

data = range(6)
as_list = [x + 1 for x in data]
print(as_list[0], as_list[-1])
total = sum(x + 1 for x in data)
print(total)

Hızlı Kontrol

Üreteç ifadelerini anlayıp anlamadığınızı sınayın.

Özet

Üreteç ifadelerini öğrendiniz:

  • Liste kavrama ifadelerine tembel bir alternatif olarak parantezleri kullanın.
  • Bellekten tasarruf sağlar ve if filtreleriyle iç içe döngüleri destekler.
  • sum, any, all ve zincirleme işlemleriyle iyi bir uyum gösterirler.
  • Tek kullanımlıdırlar.

Sırada, üreteçleri yield from ile birleştirmek var.

Sıkça Sorulan Sorular

“Üreteç İfadeleri” dersi ücretsiz mi?

Evet — “Üreteç İfadeleri” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Python Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Python Academy kursu toplamda 4 dersten oluşur.

“Üreteç İfadeleri” dersinde ne öğreneceğim?

Kısa tembel işlem hatları yazın Python Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Python Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Python Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.

“Üreteç İfadeleri” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Python Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Python Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Yineleyici Protokolü
  2. Üreteç İşlevleri
  3. Üreteç İfadeleri
  4. yield from ve Yetkilendirme
← Python Academy Sayfasına Dön