Python range: Alles über die Zahlenreihen in Python

    Avatarbild von Patrick
    Patrick

    veröffentlicht am: 19.04.2020
    zuletzt aktualisiert am: 02.02.2023

    Python range: Zahlenreihen realisieren!

    Manchmal benötigen wir Zahlenreihen für die vielfältigen Operationen, die wir beim Programmieren ausführen müssen, wofür uns in Python range zur Verfügung steht.

    Die range Funktion

    Verwendung in Python3

    Du kannst range mit 3 Parametern aufrufen, von denen 2 optional sind.

    range(Start, Stop, Schritt)
        Start (optional)    Anfang der Zahlenreihe
                            Standartwert ist 0
        Stop (erforderlich) Ende der Zahlenreihe
        Schritt (optional)  Wert für Erhöhung der Zahlen
                            Standardwert ist 1

    Wenn du nun range ausführst und den Typen ansiehst, wirst du feststellen, dass es sich dabei nicht um eine Funktion, sondern um eine Klasse mit demselben Namen handelt:

    x = range(3)
    print(type(x), x)
    # <class 'range'> range(0, 3)

    Dennoch verhält sich diese Klasse in einer for-Schleife genau wie eine Liste von Integern. Somit kannst du auch mit jedem einzelnen generierten Wert arbeiten.

    x = range(3)
    for n in x:
        print(type(n), n)

    Output:

    <class 'int'> 0
    <class 'int'> 1
    <class 'int'> 2

    Wenn du einen zweiten Parameter angibst, gibt der Erste an, mit welcher Zahl die Zahlenreihe startet und der Zweite bei welcher diese endet.

    x = range(1, 5)
    for n in x:
        print(n)

    Output:

    1
    2
    3
    4

    Mit einem dritten Parameter kannst du angeben, um wie viel die nächste generierte Zahl höher sein soll, als die vorgehende.

    x = range(0, 20, 5)
    for n in x:
        print(n)

    Output:

    0
    5
    10
    15

    Verwendung mit negativen Werten

    Wenn du versuchst, range mit nur einem negativen Parameter aufzurufen, wirst du keine Zahlenwerte erhalten, da der Standartwert für den Schrittparameter 1 ist.

    x = range(-10)
    print(type(x), x)
    # <class 'range'> range(0, -10)

    Im Umkehrschluss müsstest du -10 als Startwert und 0 als Endwert festlegen, um eine negative Zahlenreihe zu erhalten.

    -10
    -9
    -8
    -7
    -6
    -5
    -4
    -3
    -2
    -1

    Alternativ könntest du dasselbe Ergebnis erzielen, wenn du für den Schrittparameter einen negativen Wert angibst.

    x = range(-1, -11, -1)
    for n in x:
        print(n)

    Output:

    -1
    -2
    -3
    -4
    -5
    -6
    -7
    -8
    -9
    -10

    Am Ergebnis erkennst du, dass es sich um dieselben Zahlenwerte handelt, nur in umgekehrter Reihenfolge.

    range Objekt in Liste umwandeln

    Ein range-Objekt in eine Liste umzuwandeln ist einfach, du musst nur das range-Objekt an list übergeben, wie hier:

    x = list(range(3))
    print(type(x), x)
    # <class 'list'> [0, 1, 2]

    range und xrange in Python 2

    In älterem Code lässt sich oft noch die Funktion xrange entdecken, welche die Entsprechung von range in Python 3 ist, da die Version von range aus Python 2 heute üblicherweise keine Verwendung mehr findet.

    x = range(3)
    print(type(x), x)
    for n in x:
        print(type(n), n)
    
    # (<type 'list'>, [0, 1, 2])
    # (<type 'int'>, 0)
    # (<type 'int'>, 1)
    # (<type 'int'>, 2)

    Im vorigen Beispiel kannst du sehen, dass range in Python 2 eine Liste aus Integern generiert, statt wie in Python 3 zuvor eine Klasse, xrange jedoch verhält sich genauso wie range in Python 3 mit dem Unterschied, dass der Klassenname dieses Mal xrange anstatt range lautet:

    x = xrange(3)
    print(type(x), x)
    for n in x:
    	print(type(n), n)
    
    # (<type 'xrange'>, xrange(3))
    # (<type 'int'>, 0)
    # (<type 'int'>, 1)
    # (<type 'int'>, 2)

    Der Vorteil von xrange gegenüber range ist, dass ein xrange-Objekt immer gleich viel Speicher braucht, während dies bei mittels range generierter Listen von der Listengröße abhängig ist.
    (siehe auch: Python xrange)

    Fazit

    Die Funktion range ist äußerst praktisch, wenn du mit Zahlenreihen arbeiten musst. In Python 3 ist es als speicherschonende Klasse implementiert, während xrange eine sehr ähnliche Klasse in Python 2 darstellt, da range dort eine Funktion ist, die stattdessen eine Liste zurückgibt, deren Größe im Speicher abhängig von den Elementen und der Anzahl dieser in der Liste ist.

    Wenn du noch Fragen, Anregungen, Lob oder Kritik hast, schreibe mir doch bitte einen Kommentar.

    😩 Gelangweilt von den Udemy & YouTube-Tutorials?!

    Lerne spielerisch Python und komme deiner gutbezahlten (und an der 🌴 liegenden) Traumkarriere einen Schritt weiter.

    TP Star TP Star TP Star TP Star TP Star

    "Für Leute die gerne Python oder Java lernen wollen ist Codegree klasse. Ist nicht wie bei anderen Konkurrenten auf Videokursen aufgebaut..."

    - Lennart Sparbier

    100% kostenlos registrieren · keine Kreditkarte notwendig

    👋 Wir warten bereits auf dich!

    Lerne das, was du wirklich brauchst.

    Im Gegensatz zu der Abendschule oder der alteingesessenen Uni lernst du bei codegree die Sprachen & Pakete, die wirklich im Jobmarkt gesucht werden.

    Logo von Python
    Logo von PyTorch
    Logo von Pandas
    Logo von Matplotlib
    Logo von Java
    Logo von NumPy
    Mehr erfahren

    100% kostenlos registrieren · keine Zahlungsdaten notwendig