[Python-de] 1,2,3,5,7,8,9 -> "1-3,5,7-9"

Alexander 'boesi' Bösecke boesi.josi at gmx.net
Fre Jun 18 14:50:49 CEST 2004


Hi

Am 18.06.2004 14:07:42 schrieb Jan Voges:

> Oops, auf Performanz hab' ich nun gar nicht achtet. Die 
> String-Concatinations sind natürlich schweineteuer.

Huch :)
Hab meine Loesung ebenfalls angepasst:

    zustand = 1
    c = 0
    res_liste = []
    ret_liste.append('%d' % l[c])
    for c in range(1,len(l)):
        if zustand == 1:
            if l[c] != liste[c-1]+1:
                res_liste.append(',%d' % l[c])
            else:
                zustand = 2
        elif zustand == 2:
            if l[c] != l[c-1]+1:
                zustand = 1
                res_liste.append('-%d,%d' % (l[c-1], l[c]))
    result = ''.join(res_liste)

und komme auf folgende Ergebnisse:
Anzahl 40000
Laufzeit (Frank): 5.0987 sec
Laufzeit (kgm):   2.8702 sec
Laufzeit (Jan):   5.0814 sec
Laufzeit (Jan_opt):   0.1492 sec
Laufzeit (Rene):  64.5952 sec
Laufzeit (boesi): 2.2832 sec
Laufzeit (boesi_opt): 0.1037 sec
 
Die beiden schnellsten nochmal im direkten Vergleich:
Anzahl 1000000
Laufzeit (Jan_opt):   4.1980 sec
Laufzeit (boesi_opt): 2.8218 sec
 
cu boesi
-- 
<seasons82> was ist rl?                              #1671 : icq-intern
<seasons82> und muss man das wissen?             #73628288 : icq-extern
...der moment wo einem klar wird,                 boesi111 : aim
          dass man zuviel chattet...                  i171 : reallife