SORU
16 Temmuz 2010, Cuma


Kullanımına Python sıfırlanabilir?

Python yineleyici / jeneratör sıfırlayabilir miyim? Ve dosyanın başlangıcına (csv modülü) sıfırlama ister DictReader kullanıyorum.

CEVAP
16 Temmuz 2010, Cuma


Ben birçok cevaplar için docs: önemli bir uyarı göz ardı itertools.tee ama düşündüren bakın

Bu itertool önemli gerektirebilir depolama (bağlı olarak ne kadar yardımcı çok geçici veri olması gerekir saklı). Bir yineleyici genel olarak, daha önce birçok veya tüm verileri kullanır başka bir yineleyici daha hızlı başlar, tee() yerine list() kullanmak için.

Temelde, tee İki (veya daha fazla) bir yineleyici klonlar bu durum için tasarlanmıştır, "senkronize" birbirleri ile, gelmeyinçok fazlabunun yerine aynı derler "" (bazı şeyleri geride ya birbirimizi önde). civarı Bu OP sorunu için uygun değildir "baştan yeniden".

Diğer yandan L = list(DictReader(...)) gayet uygun, dicts listesini rahatça belleğe sığabilecek kadar uzun. Yeni bir "yineleyici Başlat" (çok hafif ve düşük genel) yapılabilir herhangi bir zamanda iter(L) ve kullanılan kısmını ya da tamamını etkileyen olmadan yeni veya mevcut olanları; diğer erişim modelleri de kolayca kullanılabilir.

Bazı cevaplar haklı olarak söylediği gibi, csv özel durumda da .seek(0) temel dosya itiraz edebilirsiniz (çok özel bir durum). Emin değilim bu belgelenmiş ve garantili, ama şu anda iş; olur muhtemelen dikkate değer için gerçekten çok büyük csv dosyaları, hangi list ben recommmend olarak genel yaklaşım olurdu çok büyük bir bellek ayak izi.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Gee Cee

    Gee Cee

    1 AĞUSTOS 2009
  • SunsetTrance

    SunsetTrance

    20 EYLÜL 2008
  • TechnoBuffalo

    TechnoBuffal

    8 HAZİRAN 2007