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

Frank Immich frankimmich at gmx.de
Fre Jun 18 09:24:32 CEST 2004


Hallo zusammen, 

ich bin irgendwie nicht zufrieden... 
Ich würde gerne aus einer Liste:
z.b.
1,2,3,5,7,8,9,11
einen String generieren, wobei fortlaufende Reihen zusammengefasst werden.
->  "1-3,5,7-9,11"

hier mein kläglicher Vesuch...
irgendwie habe ich das Gefühl: Das muss einfacher gehen ?
Vielleicht hat ja jemand Lust auf diese kleine morgendliche
Denksportaufgabe...

Vielen Dank 
Grüße Frank

#!/usr/local/bin/python
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=""
mylist=[]
for c in xrange(len(l)-1):
        mylist.append(l[c])
        if l[c]+1 == l[c+1]:continue
        if len(mylist)==1:r=r+str(mylist[0])+ ","
        else:r=r + str(mylist[0]) +"-" + str(mylist[len(mylist)-1])+","
        mylist=[]
mylist.append(l[len(l)-1])
if len(mylist)==1:r=r+str(mylist[0])+ ","
else:r=r + str(mylist[0]) +"-" + str(mylist[len(mylist)-1])+","
print r


-- 
+++ Jetzt WLAN-Router für alle DSL-Einsteiger und Wechsler +++
GMX DSL-Powertarife zudem 3 Monate gratis* http://www.gmx.net/dsl