Generator expression
- Python kursu
- Başlangıç
- Ders 63/116
- 5 dk
(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])
# 14Generator 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
# Generator ile kareleri toplaÖrnek çözüm
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
gen = (n * n for n in ____)
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 |