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

Gregor Lingl glingl at aon.at
Fre Jun 18 18:09:47 CEST 2004



kgm schrieb:

> Hi,
>
> On Fri, 18 Jun 2004 10:54:39 +0200, René Liebscher 
> <R.Liebscher at gmx.de>  wrote:
>
>> Wie das von der Laufzeit bei sehr grossen Eingabelisten aussieht, ist
>
>
> habe Deine Laufzeit-Anmerkung mal zum Anlass genommen, einige der  
> geposteten Varianten zu messen. Hier die Messung für 30000 Zahlen:
>
> Anzahl 30000
> Laufzeit (Frank): 7.6432 sec
> Laufzeit (kgm): 3.1479 sec
> Laufzeit (Jan): 6.8867 sec
> Laufzeit (Rene): 122.2487 sec
>
>
Kann jemand mit Euren Eingaben nachmessen, wie schnell das ist:

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()

r=str(l[0])
seq = False
for a,b in zip(l,l[1:]):
    if b-a==1:
        if not seq:
            seq = True
            r+="-"
    else:
        if seq:
            r += str(a)
            seq = False
        r += "," + str(b)
if seq: r+="%s"%b
print r


Interessiert mich wegen des zip
Danke, Gregor