Seite 1 von 1

Frage zu "range" - Runterzählen lassen

Verfasst: Mittwoch 23. April 2014, 21:30
von duodiscus
Hallo liebe Python Gemeinde,
ich möchte dieses mal gerne Zahlen nicht von null nach x hochzählen lassen sondern von einer bestimmten Zahl runterzählen lassen und dann soll bei einer Zahl angehalten werden und das in einem Intervall. Klingt an sich logisch und funktioniert beim raufzählen auch perfekt nur beim runterzählen, gibt er mir eine leere Liste zurück. Was muss ich beachten, damit das funktioniert?

Code: Alles auswählen


def funktion():
    L = [ ]
    for i in range(100, 20, 5):
        L.append(i)
    return L 
    
    

Re: Frage zu "range" - Runterzählen lassen

Verfasst: Mittwoch 23. April 2014, 21:38
von BlackJack
@duodiscus: Das dritte Argument gibt an wie viel bei jedem Durchlauf addiert werden soll. Wenn Du runterzählen willst, musst Du negative Werte addieren.

Letztlich finde ich persönlich es lesbarer immer nur hochzählende `range()`/`xrange()` zu verwenden und die `reversed()`-Funktion zu verwenden. Dann muss man sich weder bei der Schrittweite noch bei der Endzahl Gedanken machen.

Das liesse sich übrigens auch deutlich kompakter ausdrücken wenn man die `list()`-Funktion verwendet statt erst eine leere Liste zu erstellen, und die dann in einer Schleife mit Werten zu füllen (Python 2):

Code: Alles auswählen

In [8]: list(reversed(xrange(25, 101, 5)))
Out[8]: [100, 95, 90, 85, 80, 75, 70, 65, 60, 55, 50, 45, 40, 35, 30, 25]
Bei Python 3 dann `range()` statt `xrange()`.

Re: Frage zu "range" - Runterzählen lassen

Verfasst: Mittwoch 23. April 2014, 22:04
von duodiscus
Danke für die ausführliche Antwort. Ich habe deinen Tipp übernommen und es auch mit dem reversed Befehl gemacht. Dein Vorschlag ist natürlich deutlich weniger Code - das ist wohl so :wink:

Re: Frage zu "range" - Runterzählen lassen

Verfasst: Donnerstag 1. Mai 2014, 12:10
von wirrbel
Es ist auch möglich als Schrittweite eine negative Zahl anzugeben:

Code: Alles auswählen

In [3]: [i for i in xrange(100, 20, -5)]
Out[3]: [100, 95, 90, 85, 80, 75, 70, 65, 60, 55, 50, 45, 40, 35, 30, 25]

Re: Frage zu "range" - Runterzählen lassen

Verfasst: Donnerstag 1. Mai 2014, 13:25
von Hyperion
wirrbel hat geschrieben:Es ist auch möglich als Schrittweite eine negative Zahl anzugeben:
Das hatte BlackJack ja auch schon erwähnt... ;-)