SORU
13 AĞUSTOS 2009, PERŞEMBE


Sıfırlanmasını jeneratör Python nesne

Jeneratör nesne birden fazla katsayı ile geri döndüm. Bu jeneratör arama için hazırlık zaman alıcı bir operasyon değil. Jeneratör birkaç kez yeniden kullanmak istiyorum nedeni budur.

y = FunctionWithYield()
for x in y: print(x)
#here must be something to reset 'y'
for x in y: print(x)

Tabii ki, basit bir liste halinde akılda içerik kopyalama alıyorum.

CEVAP
13 AĞUSTOS 2009, PERŞEMBE


Jeneratörler geri olamaz. Aşağıdaki seçenekler vardır:

  1. Yine jeneratör işlevi, nesil yeniden çalıştırın:

    y = FunctionWithYield()
    for x in y: print(x)
    y = FunctionWithYield()
    for x in y: print(x)
    
  2. Tekrar: üzerinde yineleme yapabilirsiniz hangi bellek veya diskte veri yapısı içinde jeneratör sonuçlarını saklayın

    y = list(FunctionWithYield())
    for x in y: print(x)
    # can iterate again:
    for x in y: print(x)
    

Seçenek olumsuz1bu değerleri tekrar. hesaplar olduğunu Eğer CPU-yoğun ise iki kere hesaplanırken. Öte yandan, olumsuz2depolama. Tüm değerlerin listesini hafızada saklanır. Eğer çok fazla değer varsa, bu kullanışsız olabilir.

Klasik varbellek vs işlem bedeli. Ya değerleri saklamak veya onları tekrar hesap etmeden jeneratör sarma bir yol düşünemiyorum.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Kingsimba357

    Kingsimba357

    7 NİSAN 2008
  • Kupa World

    Kupa World

    1 EYLÜL 2011
  • Mark Hyder

    Mark Hyder

    6 EKİM 2011