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

  • NicoleGrippo

    NicoleGrippo

    14 Kasım 2006
  • VvCompHelpvV

    VvCompHelpvV

    4 EYLÜL 2007
  • YouplusmeVEVO

    YouplusmeVEV

    4 EYLÜL 2014