[Python-de] 1,2,3,5,7,8,9 -> "1-3,5,7-9"
Alexander 'boesi' Bösecke
boesi.josi at gmx.net
Fre Jun 18 10:48:20 CEST 2004
- Vorherige Nachricht: [Python-de] 1,2,3,5,7,8,9 -> "1-3,5,7-9"
- Nächste Nachricht: [Python-de] 1,2,3,5,7,8,9 -> "1-3,5,7-9"
- Nachrichten sortiert nach:
[ Datum ]
[ Thema ]
[ Betreff (Subject) ]
[ Autor ]
Hi
Am 18.06.2004 09:24:32 schrieb Frank Immich:
> 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"
Also ohne das ich deinen Code auch nur ansatzweise verstanden hab,
wuerde ich das mit ner Zustandsmaschine machen:
---snip---
liste=[3,5,6,7,8,9,10,11,12,22,23,24,25,26,32,34,36,38,39,40,41,44,45,47]
liste.sort()
status = 0
r = ''
for c in range(len(liste)):
if status == 0:
r += '%d' % liste[c]
status = 1
elif status == 1:
if liste[c] == liste[c-1]+1:
status = 2
r += '-'
else:
r += ',%d' % liste[c]
elif status == 2:
if liste[c] != liste[c-1]+1:
status = 1
r += '%d,%d' % (liste[c-1], liste[c])
print r
---snap---
Wenn 44,45 nicht als 44-45 dargestellt werden soll, sieht das wie folgt
aus:
---snip---
for c in range(len(liste)):
if status == 0:
r += '%d' % liste[c]
status = 1
elif status == 1:
if liste[c] == liste[c-1]+1:
status = 2
else:
r += ',%d' % liste[c]
elif status == 2:
if liste[c] == liste[c-1]+1:
status = 3
r += '-'
else:
status = 1
r += ',%d,%d' % (liste[c-1], liste[c])
elif status == 3:
if liste[c] != liste[c-1]+1:
status = 1
r += '%d,%d' % (liste[c-1], liste[c])
---snap---
hoffe das hilft dir weiter
cu boesi
--
Wenn de Lüch net waer un dr Neid #1671 : icq-intern
gäbs lauter glückliche Leid #73628288 : icq-extern
Uhne Lüch un Neid = ganz gewiß boesi111 : aim
wär uf dr Ard is Paradies i171 : reallife
- Vorherige Nachricht: [Python-de] 1,2,3,5,7,8,9 -> "1-3,5,7-9"
- Nächste Nachricht: [Python-de] 1,2,3,5,7,8,9 -> "1-3,5,7-9"
- Nachrichten sortiert nach:
[ Datum ]
[ Thema ]
[ Betreff (Subject)]
[ Autor ]