Listeninhalt in Zahlenfolge umwandeln

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
api
User
Beiträge: 181
Registriert: Donnerstag 7. August 2008, 21:23

Hallo zusammen,

ich seh grad den Wald vor lauter Bäumen nicht - glaub ich zumindest... :|

Da wären diese Listen:

Code: Alles auswählen

a = ['1-5']
b = ['6']
Nun möchte ich diese Listen so umwandeln, dass ich als Ergebnis folgendes erhalte:

Code: Alles auswählen

a1 = [1, 2, 3, 4, 5]
b1 = [6]
Das kann doch nicht allzu schwer sein, oder?

CU,
API
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Hallo.

Schwer ist das nun wirklich nicht. Du musst halt bei dem Minus teilen, falls vorhanden, und das war es dann doch schon fast. Es stellen sich mir aber zwei Fragen: Warum sind "1-5" und "5" in Listen, es ist doch nur ein Element, und was hast du eigentlich vor? Das Problem sieht danach aus, als würdest du ein anderes Problem lösen wollen.
Das Leben ist wie ein Tennisball.
nomnom
User
Beiträge: 487
Registriert: Mittwoch 19. Mai 2010, 16:25

Ist nicht schwer, aber warum Listen mit nur einem Element?

Code: Alles auswählen

def strrange(s):
    x = map(int, s.split('-'))
    if len(x) == 1:
        return x
    else if len(x) == 2:
        return range(x[0], x[1]+1)
    else:
        raise TypeError('Wrong amount of numbers or wrong format')
Edit: Irgendwer musste ja schneller sein.
api
User
Beiträge: 181
Registriert: Donnerstag 7. August 2008, 21:23

@eyDu: Ich lese die einzelnen Werte aus einer UNIX-Cron. Und da stehen für die erlaubten Tage diese Werte, also
  • 1-5: Mo-Fr
    6: Sa
Ich möchte letztendlich abfragen, ob das heutige Datum zu den erlaubten Tagen gehört.
api
User
Beiträge: 181
Registriert: Donnerstag 7. August 2008, 21:23

@nomnom: Danke dir. Das funktioniert ja bereits bestens... :D
mutetella
User
Beiträge: 1695
Registriert: Donnerstag 5. März 2009, 17:10
Kontaktdaten:

Wenn die Daten wirklich immer so aussehen, wie Du schreibst, dann würde auch diese sehr einfach Lösung funktionieren:

Code: Alles auswählen

def ordering(iter, op):
    left = int(iter[0][0])
    right = int(iter[-1][-1])
    return left <= op <= right

>>> ordering(['1-5'], 4)
True
>>> ordering(['6'], 4)
False
Entspanne dich und wisse, dass es Zeit für alles gibt. (YogiTea Teebeutel Weisheit ;-) )
Antworten