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

  • Myron and Nejusha dance

    Myron and Ne

    2 AĞUSTOS 2012
  • READ DESCRIPTION NOW!!!!!!!

    READ DESCRIP

    18 ŞUBAT 2009
  • Tek Syndicate

    Tek Syndicat

    23 Temmuz 2008