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

  • DeAdPiXel6667

    DeAdPiXel666

    2 Ocak 2010
  • michal lelkowski

    michal lelko

    9 Temmuz 2006
  • Propaganda Time

    Propaganda T

    19 EYLÜL 2010