CodeBlanks Logo Icon CodeBlanks

Generator expression

(x for x in xs) ile generator expression'ı öğrenirsin.

Generator expression

Generator expression, comprehension'in parantezle yazılmış halidir ve tek seferlik bir üreticidir:

gen = (n * n for n in [1, 2, 3])
print(list(gen))  # [1, 4, 9]

Generator, listeyi hafızada tutmaz; elemanları istendikce üretir. Bu yüzden büyük verilerde hafıza dostudur. list(), sum(), max() gibi fonksiyonlar generator kabul eder.

Tembel değerlendirme

Generator elemanları yalnızca istendiğinde üretir; bu davranışa tembel değerlendirme denir. sum() ve max() gibi fonksiyonlar generator'u tüketir:

total = sum(n * n for n in [1, 2, 3])
# 14

Generator bir kez tüketilir; ikinci kez list(gen) yaparsan boş liste alırsın. Bu yüzden generator'u listeye çevirip saklamak gerekir.

Uygulama Generator ile toplam yaz

total değişkenine, [1, 2, 3, 4] listesindeki her n için n * n değerlerini toplayan bir generator expression'ı sum() ile ata. Sonra print(total) yazdır.

Başlangıç kodu

main.py
# Generator ile kareleri topla

Örnek çözüm

main.py
total = sum(n * n for n in [1, 2, 3, 4])
print(total)

Beklenen çıktı

30

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Generator expression'i tamamla

Soru
gen = (n * n for n in ____)
Cevap
gen = (n * n for n in [1, 2, 3])

Açıklama: Kaynak bir listedir; parantez dışarıda generator için.

2 Generator ve list comprehension arasındaki fark nedir?

  • Liste hafızada, generator tembel çalışır Doğru cevap
  • Liste parantez, generator süslü parantez
  • Liste slower, generator hızlı çalışır
  • Ikisi aynı şeydir

Açıklama: Liste tüm elemanları hafızada tutar, generator tembel üretir.

3 Türleri eşleştir

Kavram Anlamı
[n for n in x] Liste
{n for n in x} Küme
{n: n for n in x} Sözlük
(n for n in x) Generator

Başlangıç bölümündeki tüm dersler