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

Jan Voges jan.voges at gmx.de
Fre Jun 18 14:07:42 CEST 2004


Hallo!

On 18 Jun 2004 at 13:50, kgm wrote:

> Laufzeit (Frank): 7.6432 sec
> Laufzeit (kgm): 3.1479 sec
> Laufzeit (Jan): 6.8867 sec

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

Deutlich besser:

# Jan Voges
starttime = time.clock()
liste = []
for i in xrange(len(l)-1):
    liste.append(str(l[i]))
    if l[i+1] - l[i] == 1:  liste.append("-")
    else:                   liste.append(",")
liste.append(str(l[-1]))
r = "".join(liste)
#print r
r = re.sub(r"-(\d+-)+","-",r)
#print r
print "Laufzeit (Jan): %3.4f sec" % (time.clock() - starttime)

Jan