Jump to content

Python

  • entries
    53
  • comments
    0
  • views
    405

Generators


Doğuhan ELMA

46 views

Python'da, "generator" olarak adlandırılan bir tür özel fonksiyon vardır. Generatörler, normal fonksiyonların aksine, sonuçları bir seferde üretmek yerine, her seferinde bir tane olmak üzere sonuçları üretirler. Bu sayede, genellikle daha az bellek tüketirler ve özellikle büyük veri kümeleri ile çalışırken çok kullanışlıdırlar.

Bir generatör tanımlamak için, normal bir fonksiyonda return ifadesi yerine yield ifadesi kullanılır. yield anahtar kelimesi, generatörün durumunu ve yerel değişkenlerini "hatırlamasını" sağlar, böylece bir sonraki çağrıda nereden kaldığını bilir.

İşte bir generatör fonksiyonu örneği:

def simple_generator():
    yield 1
    yield 2
    yield 3

Bu generatörü bir for döngüsü ile kullanabiliriz:

for value in simple_generator():
    print(value)

Bu kod, 1, 2 ve 3 sayılarını sırasıyla yazdıracaktır. simple_generator() fonksiyonu, her yield ifadesine ulaştığında değeri döndürür ve durur. Sonraki döngüye geçildiğinde, durduğu yerden devam eder.

Generatörler, özellikle büyük veri kümeleri ile çalışırken veya tüm sonuçları hemen üretmek yerine birer birer sonuçları üretmek istediğinizde çok kullanışlı olabilir. Bu, verimliliği artırır ve aşırı bellek tüketimini önler. Bu nedenle, büyük veri kümeleri ile çalışan veri bilimi ve makine öğrenmesi uygulamalarında yaygın olarak kullanılırlar.

 

Biraz daha karmaşık bir generatör örneği üzerinden gidelim. Bir Fibonacci dizisi üreten bir generatör fonksiyonu oluşturalım. Fibonacci dizisi, her sayının önceki iki sayının toplamı olduğu bir dizi olup, 0, 1, 1, 2, 3, 5, 8, 13, 21, 34 şeklinde devam eder.

def fibonacci(limit):
    # Our first two numbers
    a, b = 0, 1

    # Start generating
    while a < limit:
        yield a
        a, b = b, a + b

Bu generatör, limit değerine ulaşıncaya kadar Fibonacci dizisindeki sayıları üretir. Artık bu generatörü, belirli bir limit belirleyerek kullanabiliriz:

for i in fibonacci(35):
    print(i)

Bu kodun çıktısı Fibonacci dizisinin ilk birkaç sayısını gösterecektir:

0
1
1
2
3
5
8
13
21
34

Bir generatörün gücü, tam diziyi hafızada tutmak zorunda olmamasıdır. Yani bu örnekte, her seferinde sadece bir sonraki Fibonacci sayısını hesaplar ve geri döndürür. Bu, büyük dizilerle çalışırken veya sonuçların hemen tümünü hesaplamak istemediğiniz durumlarda çok kullanışlıdır. Generatörler, genellikle bellek verimliliği ve "tembellik" (yani gerektiğinde hesaplama yapma) nedeniyle, özellikle büyük veri kümeleri ile çalışan veri bilimi ve makine öğrenmesi uygulamalarında yaygın olarak kullanılır.

0 Comments


Recommended Comments

There are no comments to display.

Guest
Add a comment...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...