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

  • FUNKER530 - Veteran Community & Combat Footage

    FUNKER530 -

    25 Ocak 2007
  • RaquelGamesBR

    RaquelGamesB

    20 HAZİRAN 2009
  • YAN TV

    YAN TV

    20 EKİM 2011