[Python-de] 1,2,3,5,7,8,9 -> "1-3,5,7-9"
Gerson Kurz
gerson.kurz at pergamon-software.de
Mit Jun 23 10:43:37 CEST 2004
Wenn ich ein bisserl rumoptimiere (inkl. eurer Tricks), komme ich letzthin
auf etwas von der Logik her ahnliches wie peter2, nur halt ohne Generatoren;
und wenn es wirklich ein problem ist, kann man ja 'ne pyd benutzen: siehe
Anhang. Meine Ergebnisse:
Anzahl Listenelemente: 500000
Anzahl Loops: 20
Laufzeit pro Loop im Schnitt:
boesi : 1.0696 sec (Alexander Bosecke)
Peter : 1.4595 sec (Peter Otten - sauber)
Peter2 : 1.2858 sec (Peter Otten - schnell)
Gerson : 0.9656 sec (Gerson Kurz - schnell und leserlich)
Gerson_pyd: 0.4391 sec (Gerson Kurz - Warum nicht gleich in
Inline-Assembler ???)
Bei meiner Losung ware noch eine Optimierung drin: inplace, dann spart man
sich den alloc am Anfang => Qualliste ist hin. Die pyd-Losung ist naturlich
absolut fehlerinsensitiv (z.b. durfte sie bei 0 elementen absturzen - nicht
getestet schaut aber so aus).
> @Gerson: es ist nicht grad die feine Art, einbuchstabige Variablennamen
> zu verwenden.
OK, ich habe das korrigiert!!!
def Gerson(oo):
"""Gerson Kurz - schnell und leserlich"""
oO = [None] * len(oo)
if oo:
Oo = oo[0]
o0 = Oo
OO_ = 0
for OO in oo:
if OO - o0 > 1:
if Oo != o0:
oO[OO_] = `Oo` + `-o0`
else:
oO[OO_] = `Oo`
OO_ += 1
Oo = OO
o0 = OO
if Oo != o0:
oO[OO_] = `Oo` + `-o0`
else:
oO[OO_] = `Oo`
OO_ += 1
return ",".join(oO[:OO_])
-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde geschreddert...
Dateiname : speedygonzales.zip
Dateityp : application/x-zip-compressed
Dateigröße : 6840 bytes
Beschreibung: nicht verfügbar
URL : http://starship.python.net/pipermail/python-de/attachments/20040623/ff37030e/speedygonzales.bin