SORU
5 EKİM 2010, Salı


`Dize jeneratör bir sürümü var.() split` Python?

string.split() döndürürlisteörnek. Bunun yerine generator döndüren bir sürümü var mı? Jeneratör bir sürüm olmasına karşı herhangi bir sebep var mı?

CEVAP
19 Mart 2012, PAZARTESİ


re.finditer(bağlantı) yükü oldukça az bellek kullanır gayet muhtemeldir.

def split_iter(string):
    return (x.group(0) for x in re.finditer(r"[A-Za-z'] ", string))

Demo:

>>> list( split_iter("A programmer's RegEx test.") )
['A', "programmer's", 'RegEx', 'test']

düzenleme:Sadece bu python sabit bellek 3.2.1, benim test metodolojisi doğru olduğunu varsayarak alır teyit ettim. Çok büyük boyutta bir dize (1GB kadar) ben yarattım, for bir döngü ile iterable (ekstra hafıza oluşturulan olurdu DEĞİL liste bir anlama,) tekrarlanır. Bu hafıza (bellek bir büyüme olsaydı, şimdiye kadar 1GB dize daha az oldu) dikkat çekici bir büyüme içinde sonuç vermedi.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • HowcastTechGadgets

    HowcastTechG

    22 EYLÜL 2010
  • Kanál používateľa McsFuego

    Kanál použ

    12 EKİM 2011
  • ThreadBanger

    ThreadBanger

    2 Mart 2007