SORU
29 EKİM 2008, ÇARŞAMBA


Ne zaman python jeneratörler kullanmak için iyi bir zaman değil mi?

Bu What can you use Python generator functions for? tersi oldukça: python jeneratör ifadeler, ve itertools Bu modül python'un en sevdiğim Özellikleri Bu gün. Operasyon zincirleri veri--ben yığınının üzerinde gerçekleştirmek için ayarlama genellikle DSV dosyaları işlerken onları kullanırken özellikle yararlıdır.

Ne zaman bu kadardeğilbir jeneratör veya jeneratör bir ifade veya itertools bir fonksiyonu kullanmak için iyi bir zaman mı?

  • itertools.izip(). zip() tercih etmeliyim
  • xrange(), range() ya
  • [x for x in foo] (x for x in foo) bitti mi?

Belli ki, sonunda "" genellikle bir liste oluşturmak veya non-jeneratör ile bir döngü üzerinde yineleme tarafından gerçek veri içine. bir jeneratör gidermek gerek Bazen biz sadece uzunluğunu bilmek gerekir. Benim öğrenmek istediğim bu değil.

Veri ara belleğe yeni listeleri atama değiliz ki jeneratörleri kullanıyoruz. Bu, özellikle büyük veri setleri için mantıklı. Küçük veri setleri için mantıklı mı? Gözle görülür bir bellek/cpu ticaret-off var mı?

Eğer kimse bu konuda bazı profil çıkarma yaptı özellikle ilgilenen, list comprehension performance vs. map() and filter()göz-açılış tartışması ışığında ediyorum. (alt link)

CEVAP
29 EKİM 2008, ÇARŞAMBA


Genel olarak, liste işlemleri, len gibi bir jeneratör kullanmayın(), ters () ve benzeri.

Ayrıca tembel değerlendirme (kaynak serbest bırakabilirsiniz önünde tüm hesaplama yapmak gibi) istemediğiniz zamanlar olabilir. Bu durumda, liste bir ifade daha iyi olabilir.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Kanaal van Dj0fifty

    Kanaal van D

    28 EKİM 2011
  • Droid Life

    Droid Life

    17 Kasım 2009
  • Shameless Maya

    Shameless Ma

    24 Mayıs 2012