Ü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
iffiltreleriyle iç içe döngüleri destekler. sum,any,allve 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
- Yineleyici Protokolü
- Üreteç İşlevleri
- Üreteç İfadeleri
- yield from ve Yetkilendirme