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

Gregor Lingl glingl at aon.at
Sam Jun 19 16:35:33 CEST 2004


Hallo Jochen!

Ich fürchte, das ist jetzt für die Liste vielleicht nicht mehr
so interessant, doch ...

Jochen Wersdörfer schrieb:

>Am Freitag, 18. Juni 2004 19:10 schrieb Thorsten Kampe:
>  
>
>
>Anzahl 40000
>  
>
Was bedeutet hier die 40000?
Etwa 40000 Durchläufe, oder wird eine Liste mit 40000 Elementen
generiert. Wann dies, dann welche, wie? (Damit ich selber zum Vergleich
messen kann).

Das mit dem zip hat sich nicht so recht bewährt :-[
Hab aus dem Thread - hoff' ich - ein bisschen gelernt und bin

jetzt bei folgendem angelangt:

l=[3,5,6,7,8,9,10,11,12,22,23,24,25,26,32,34,36,38,39,40,41,44,45,47]
l.sort()

a = l.pop(0)
r = [str(a)]
seq = False
for b in l:
    if b-a==1:
        if not seq:
            seq = True
            r.append("-")
    else:
        if seq:
            r.append(str(a))
            seq = False
        r.append(","+str(b))
    a = b
if seq: r.append(str(b))
       
r = ''.join(r)
print r

Sollte doch erheblich schneller sein.

Schöne Grüße
Gregor

P.S.: Wie man an an den unmöglichen Zeiten, wo ich poste
erkennen kann, bin ich offenbar nicht Profi- sondern
Freizeitprogrammierer. (Wenn man bei Lehrern von Freizeit
sprechen kann ... ;-)

>Laufzeit (jochen): 0.5900 sec
>Laufzeit (jan): 0.2200 sec
>Laufzeit (bösi): 0.1400 sec
>Laufzeit (gregor): 8.7500 sec
>Laufzeit (thorsten): 483.7400 sec
>  
>