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

  • Greater Than Gatsby Photoshop Actions & Lightroom Presets

    Greater Than

    11 ŞUBAT 2013
  • ImBluecams

    ImBluecams

    25 Kasım 2012
  • metal571

    metal571

    30 Mayıs 2006