[Python-de] 1,2,3,5,7,8,9 -> "1-3,5,7-9"
Jochen Wersdörfer
jochen-python at wersdoerfer.de
Fre Jun 18 11:53:04 CEST 2004
- Vorherige Nachricht: [Python-de] 1,2,3,5,7,8,9 -> "1-3,5,7-9"
- Nächste Nachricht: [Python-de] Re: 1,2,3,5,7,8,9 -> "1-3,5,7-9"
- Nachrichten sortiert nach:
[ Datum ]
[ Thema ]
[ Betreff (Subject) ]
[ Autor ]
Frank Immich wrote:
>
> irgendwie habe ich das Gefühl: Das muss einfacher gehen ?
> Vielleicht hat ja jemand Lust auf diese kleine morgendliche
> Denksportaufgabe...
Ob das jetzt einfacher oder eleganter ist, weiß ich nicht, aber es
geht mit ein 2 Hilfsfunktionen in einer Zeile :->...
def lastNum(s):
i = 1
if len(s) == 1: return 2
else:
while((len(s) - i > 0) and s[-i].isdigit()): i = i + 1
return i
def stripDashes(s):
d = s.split("-")
if len(d) > 1: return '-'.join((d[0], d[-1]))
return s
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[0] = str(l[0])
[stripDashes(i) for i in reduce(lambda x, y:("%s-%s" % (x, y), "%s,%s" % (x, y))[y != int(x[-lastNum(x) + 1:]) + 1], l).split(",")]
Gruss,
Jochen
- Vorherige Nachricht: [Python-de] 1,2,3,5,7,8,9 -> "1-3,5,7-9"
- Nächste Nachricht: [Python-de] Re: 1,2,3,5,7,8,9 -> "1-3,5,7-9"
- Nachrichten sortiert nach:
[ Datum ]
[ Thema ]
[ Betreff (Subject)]
[ Autor ]