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

  • jonathepianist

    jonathepiani

    31 Temmuz 2008
  • KittiesMama

    KittiesMama

    10 AĞUSTOS 2008
  • Within Temptation

    Within Tempt

    18 EYLÜL 2006