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

kgm km-news3 at onlinehome.de
Fre Jun 18 11:01:45 CEST 2004


Hi,

On Fri, 18 Jun 2004 09:24:32 +0200 (MEST), Frank Immich
<frankimmich at gmx.de> wrote:

> Vielleicht hat ja jemand Lust auf diese kleine morgendliche
> Denksportaufgabe...

da ich zZ viel mit Perl (machen muss), habe ich das mal als kleine
Abwechslung gesehen ;-)

Allerdings ist es gar nicht so leicht, schnell von Perl auf Python
umzuschalten...

Da ich ein Schleifen bevorzuge, habe ich eine For-Schleife verwendet.
Allerdings hat die Routine einen "schmutzigen" Trick, an die Liste muss
ein weitere Wert angehängt werden, damit der "Trigger" in der Schleife
auch beim letzten Wert funktioniert. Deshalb der Append. Könnte man aber
sicher auch noch anders lösen...
So, zurück zu Perl :-(

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(); l.append(l[-1]+2);
r=""
start = l[0]
last = start
for v in l:
      if v-last > 1:
          if last == start:
              r += str(start) + ","
          else:
              r += str(start) + "-" + str(last) + ","
          start = v
      last = v
del l[-1] #append wieder aufheben
print r



-- 
Mit freundlichen Grüßen
Klaus Meyer :-)