Python Academy · Ders

Üreteç İfadeleri

Belleği verimli kullanmak için üreteç ifadeleriyle tembel diziler oluşturun.

3. ders / 414 adım

Ü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.

Giriş

Üreteç ifadeleri tembel üreteçlerdir; bellekte bir liste oluşturmadan değerleri teker teker üretirler.

Üreteç İfadesi Sözdizimi

(expression for item in iterable), parantezleri kullanır. Bir liste DEĞİL, üreteç nesnesi döndürür.
gen = (x**2 for x in range(5))
print(gen)  # generator object
print(next(gen))  # 0
print(next(gen))  # 1

Bellek Verimliliği

Bir üreteç aynı anda yalnızca bir değer tutar. sum(x**2 for x in range(10**7)), bir listeye kıyasla O(1) bellek kullanır.
total = sum(x**2 for x in range(100))
print(total)

Üreteci Tüketme

Üreteçler bir kez tüketilir. Tükendikten sonra StopIteration yükseltilir ve geriye hiçbir şey kalmaz.
gen = (x for x in range(3))
for val in gen:
    print(val)
# gen is now exhausted

İşlev Bağımsız Değişkeni Olarak Üreteç

Bir üreteç tek bağımsız değişmense fazladan parantezleri kaldırabilirsiniz: sum(x**2 for x in range(10)).
print(sum(x**2 for x in range(10)))
print(max(len(w) for w in ['cat', 'elephant', 'ant']))

Üreteçleri Zincirleme

Üreteçleri tembel biçimde zincirleyebilirsiniz: evens = (x for x in range(100) if x%2==0); big = (x for x in evens if x>50).
evens = (x for x in range(100) if x % 2 == 0)
big_evens = (x for x in evens if x > 50)
print(list(big_evens))

Listeye/Tuple'a Dönüştürme

list(gen) veya tuple(gen), tüm değerleri somutlaştırır. Rastgele erişime veya birden çok geçişe ihtiyaç duyduğunuzda bunu yapın.
gen = (x**2 for x in range(5))
print(list(gen))

Üreteç İfadesi ve Liste Üreteci Karşılaştırması

Şu durumlarda üreteç kullanın: yalnızca bir kez yineliyorsanız veya veri kümesi büyükse. Şu durumlarda liste kullanın: len(), dizinleme veya birden çok geçiş gerekiyorsa.
import sys
lst = [x**2 for x in range(1000)]
gen = (x**2 for x in range(1000))
print(sys.getsizeof(lst), sys.getsizeof(gen))

Sonsuz Üreteçler

itertools.count(0), sonsuz bir sayaçtır. Yalnızca ihtiyacınız olanı almak için islice ile birlikte kullanın.
import itertools
first10 = list(itertools.islice(itertools.count(0), 10))
print(first10)

Üreteçlerle any() ve all()

any(x>5 for x in lst), kısa devre yaparak ilk True değerinde durur. all(), ilk False değerinde durur. Çok verimlidir.
nums = [1, 3, 7, 2]
print(any(x > 5 for x in nums))
print(all(x > 0 for x in nums))

İşlem Hatları

Dönüşümleri tembel biçimde zincirleyin: veri → filtrele → dönüştür → birleştir. Her adım bir üreteçtir; gerekene kadar hiçbir şey çalışmaz.
data = range(1000)
filtered = (x for x in data if x % 7 == 0)
transformed = (x * 2 for x in filtered)
print(sum(transformed))

Hızlı Kontrol

Bir üreteç ifadesinin liste üretecine kıyasla temel bellek avantajı nedir?

Özet

Üreteç ifadeleri: (expr for x in it). Tembel değerlendirme sayesinde O(1) bellek kullanır. Bir kez tüketilir. sum/any/all/max ile kullanın. Birden çok geçiş gerektiğinde listeye dönüştürün.

Devam Edin

Harika! Becerilerinizi geliştirmek için sonraki derse geçin.
Başlamak ücretsiz

Yapay zeka eğitmeniyle Python öğren — ücretsiz

Tarayıcında gerçek kod yaz ve çalıştır, 7/24 yapay zeka eğitmeninden anında yardım al; web'de ya da uygulamada kaldığın yerden devam et.

Kurslar
76
Dersler
320

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?

Belleği verimli kullanmak için üreteç ifadeleriyle tembel diziler oluşturun. 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. Liste Kapsamaları
  2. Küme ve Sözlük Kapsamaları
  3. Üreteç İfadeleri
  4. yield Anahtar Sözcüğü
← Python Academy Sayfasına Dön