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

Frank Immich frankimmich at gmx.de
Don Jul 29 12:05:48 CEST 2004


Hallo,
ich habe gerade die ganzen mails gesehen die ich hiermit noch ausgelöst habe
:-) 
Vielen Dank für die ganzen Antworten. Da kann ich 
eine Menge lernen (und wohl nicht nur ich)
Grüße Frank 


--- Weitergeleitete Nachricht / Forwarded Message ---
Date: Fri, 18 Jun 2004 09:24:32 +0200 (MEST)
From: "Frank Immich" <frankimmich at gmx.de>
To: python-de at python.net
Subject: 1,2,3,5,7,8,9 ->  "1-3,5,7-9"

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



-- 
NEU: WLAN-Router für 0,- EUR* - auch für DSL-Wechsler!
GMX DSL = supergünstig & kabellos http://www.gmx.net/de/go/dsl