arkadaşlar bu kod:
generator = (i for i in range(5))
print(generator, type(generator))
#çıktı : <generator object <genexpr> at 0x02C8FD70> <class 'generator'>
iken neden bu tuple tipinde
generator = (1,2,3,4,5)
print(generator, type(generator))
#çıktı : (1, 2, 3, 4, 5) <class 'tuple'>
Çünkü biri tuple tanımlıyor biri de generator. Parantezler aklınızı karıştırmasın.
Bu sözdizimi bir generator
tanımlar. Tuple kısmını zaten biliyorsunuzdur. Eğer bu generatoru bir tuple’a dönüştürmek isterseniz bunu yazmanız yeterli:
generator = (i for i in range(5))
print(tuple(generator))
peki anlatabilir misiniz generatör nedir ?
bu cevaptan sonra bu konuyu tam anlayamadığımı anladım lütfen yardımcı olun
1 Beğeni
Generatorler, hafızada yer kaplamaz.
a = (i for i in range(10 ** 10))
Yukarıdaki kodu tanımladığınız zaman döndürülen veri bir generatör olur ve generatör içerisindeki elemanlar, sırası gelince hafızada yer kaplamaya başlarlar.
Ama aşağıdaki kod bir üreteç değildir.
a = [i for i in range(10 ** 10)]
Bu kodu çalıştırır çalıştırmaz, hafızada yer kaplamaya başlar.
Generatorlerdeki elemanlara ulaşmak için next()
fonksiyonu kullanılır.
>>> a = (i for i in range(10 ** 10))
>>> next(a)
0
>>> b = [i for i in range(10)]
>>> next(b)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'list' object is not an iterator
>>>
1 Beğeni
Bir parantez unutmuşsunuz.
1 Beğeni