Python range()-Funktion: Float, List, For-Schleife Beispiele

⚡ Intelligente Zusammenfassung

Python range() ist eine eingebaute Funktion, die eine unveränderliche Folge von ganzen Zahlen von einem Startwert bis zu einem Endwert (ausschließlich) erzeugt, wobei optional ein Schritt zur Steuerung der Inkrementierung verwendet wird.

  • 🔘 Syntax: range(start, stop, step) akzeptiert bis zu drei ganzzahlige Argumente, wobei start standardmäßig auf 0 und step standardmäßig auf 1 gesetzt ist.
  • ☑️ Exklusiver Halt: Die Sequenz endet immer einen Wert vor dem Stoppindex, daher liefert range(5) die Werte 0 bis 4.
  • Schrittsteuerung: Ein positiver Schritt erhöht die Werte, während ein negativer Schritt für einen umgekehrten Bereich rückwärts zählt.
  • 🧪 Typbeschränkungen: Es werden nur ganze Zahlen akzeptiert, daher führen Gleitkomma- oder Zeichenkettenargumente zu einem TypeError.
  • NumPy-Gleitkommazahlen: Die NumPy-Funktion arange() erweitert das Verhalten von range() auf Gleitkomma-Sequenzen.
  • 🤖 KI-Workflows: Der Code für maschinelles Lernen verwendet range(), um Trainingsepochen, Mini-Batches und Hyperparameter-Gitter zu iterieren.

Python range() Funktion

Was ist Python Bereich?

Python range() ist eine integrierte Funktion, die verfügbar ist mit Python ab Python (3.x) und gibt eine Zahlenfolge basierend auf dem angegebenen Start- und Stoppindex aus. Falls der Startindex nicht angegeben ist, wird der Index als 0 betrachtet und der Wert wird bis zum Stoppindex um 1 erhöht.

Beispielsweise gibt range(5) die Werte 0, 1, 2, 3, 4 aus. Python range() ist ein sehr nützlicher Befehl und wird hauptsächlich dann verwendet, wenn man iterieren muss. for-Schleife.

Syntax

Die Syntax der range()-Funktion ist unten dargestellt:

range(start, stop, step)

Kenngrößen

  • Start: (optional) Der Startindex ist eine Ganzzahl. Wenn er nicht angegeben wird, ist der Standardwert 0.
  • hör auf Der Stoppindex bestimmt den Wert, bei dem die Bereichsfunktion beendet werden soll. Er ist eine obligatorische Eingabe für die Bereichsfunktion. Der letzte Wert ist immer um 1 kleiner als der Stoppwert.
  • Schritt: (optional) Der Schrittwert ist die Zahl, um die die nächste Zahl im Bereich erhöht werden muss; standardmäßig ist er 1.

Rückgabewert

Der Rückgabewert ist eine Zahlenfolge vom angegebenen Start- bis zum Stoppindex.

Python range() Funktion und Verlauf

Python range() wurde eingeführt von Python Version 3; davor hieß die Funktion xrange().

Sowohl range() als auch xrange() werden verwendet, um eine Zahlenfolge zu erzeugen.

Im Folgenden werden die Unterschiede zwischen range() und xrange() erläutert:

Reichweite() Bereich ()
Die Funktion range() gibt die Zahlenfolge an und gibt eine Liste von Zahlen zurück. Die Funktion xrange() gibt ein Generatorobjekt zurück, das in einer For-Schleife ausgeführt werden muss, um die Werte zu erhalten.
Die range() gibt eine Liste zurück. xrange() gibt ein Generatorobjekt zurück.
Die Methode range() benötigt im Vergleich zu xrange() mehr Speicher, da die zurückgegebene Liste gespeichert werden muss. Da xrange() ein Generatorobjekt zurückgibt, werden die Werte nicht sofort angezeigt und müssen innerhalb einer for-Schleife verwendet werden, um sie zu erhalten.
Der Speicherverbrauch ist höher, daher ist die Codeausführung langsam, wenn mit einer großen Datenmenge gearbeitet wird. Die Codeausführung ist mit xrange() schneller.

Verwenden von range()

Dieses Beispiel zeigt, wie die Werte von 0-9 mit range() gedruckt werden.

Der im Bereich verwendete Wert ist 10, daher ist die Ausgabe 0 1 2 3 4 5 6 7 8 9.

Da der Startwert nicht angegeben ist, wird er als 0 angenommen und der letzte Wert wird bis 9 angegeben. Der letzte Wert ist immer um 1 kleiner als der angegebene Wert, d. h. Stopp-1.

for i in range(10):
    print(i, end =" ")

Ausgang:

0 1 2 3 4 5 6 7 8 9

Verwenden von Start und Stop in range()

Im Code ist der Startwert 3 und der Endwert 10. Da der Startindex 3 ist, beginnt die Zahlenfolge bei 3 und endet beim Endwert. Der letzte Wert in der Folge ist um 1 kleiner als der Endwert, also 10 - 1 = 9.

for i in range(3, 10):
    print(i, end =" ")

Ausgang:

3 4 5 6 7 8 9

Verwenden von Start, Stopp und Schritt

Der Startwert ist 3, die Zahlenfolge beginnt also bei 3. Der Endwert ist 10, die Zahlenfolge endet also bei (10-1), also 9. Die Schrittweite beträgt 2, jeder Wert in der Folge wird also um 2 erhöht. Wird keine Schrittweite angegeben, wird standardmäßig 1 verwendet.

for i in range(3, 10, 2):
    print(i, end =" ")

Ausgang:

3 5 7 9

Bisher haben wir gesehen, wie die Funktion `range()` den inkrementierten Wert für den angegebenen Stoppwert liefert. Betrachten wir nun ein Beispiel, um den dekrementierten Wert innerhalb des angegebenen Bereichs zu erhalten.

Die Werte im Bereich werden in positiven Schritten erhöht.

Mit dem Parameter `step` in `range()` können Werte inkrementiert oder dekrementiert werden. Standardmäßig ist der Wert positiv, nämlich 1. Daher werden immer inkrementierte Werte ausgegeben.

Der Schrittwert muss positiv sein, wenn Sie inkrementierte Werte als Ausgabe wünschen.

for i in range(1, 30, 5):
    print(i, end =" ")

Ausgang:

1 6 11 16 21 26

Reverse Bereich: Verringern der Werte mit negativen Schritten

Der Parameter `step` mit einem negativen Wert in `range()` kann verwendet werden, um dekrementierte Werte zu erhalten. Im folgenden Beispiel ist der Wert für `step` negativ, daher wird der Ausgabewert vom angegebenen Bereichswert dekrementiert.

for i in range(15, 5, -1):
    print(i, end =" ")

Ausgang:

15 14 13 12 11 10 9 8 7 6

Der Startwert ist 15, der Endwert ist 5 und der Schrittwert ist eine negative Zahl, also -1. Mit den obigen Eingaben dekrementiert die Funktion range() den Wert von 15 an bis zum Endwert, wobei der letzte Wert hier Endwert + 1 ist.

Die Verwendung von Gleitkommazahlen in Python Reichweite()

Lassen Sie uns nun mit Gleitkommazahlen am Bereich () arbeiten.

Ejemplo:

for i in range(10.5):
    print(i, end =" ")

Im obigen Beispiel haben wir den Stoppwert auf 10.5 gesetzt.

Die Ausgabe ist:

Traceback (most recent call last):
  File "python_range.py", line 1, in <module>
    for i in range(10.5):
TypeError: 'float' object cannot be interpreted as an integer

Python Es tritt ein Fehler auf, da die Funktion range() keine Gleitkommazahlen für Start, Stopp und Schritt unterstützt.

Verwenden einer For-Schleife mit Python Reichweite()

In diesem Beispiel verwenden wir ein Zahlenarray und sehen uns an, wie man das Array innerhalb einer for-Schleife mit range() durchläuft.

Ejemplo:

arr_list = ['Mysql', 'Mongodb', 'PostgreSQL', 'Firebase']

for i in range(len(arr_list)):
    print(arr_list[i], end =" ")

Ausgang:

MysqlMongodb PostgreSQL Firebase

Im obigen Beispiel haben wir `len(arr_list)` als Abbruchkriterium verwendet. Die for-Schleife durchläuft die Liste bis zum Abbruchkriterium, also bis zur Länge des Arrays, in diesem Fall 4, da `arr_list` vier Elemente enthält. Der Startwert ist 0 und die Schrittweite 1. Die Schleife beginnt also bei 0 und endet bei 3, also der Länge des Arrays minus 1, was 4 - 1 = 3 entspricht.

Die Verwendung von Python range() als Liste

In diesem Beispiel erfahren Sie, wie Sie die Ausgabe des Bereichs als Liste verwenden.

Ejemplo:

print(list(range(10)))

Ausgang:

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

Sie können sehen, dass die Ausgabe ein Listenformat ist. Es war nicht notwendig, die Funktion „range()“ in einer Schleife auszuführen, und mit der Methode „list()“ konnten wir die Ausgabe direkt vom Bereichsformat in das Listenformat konvertieren.

Verwendung von Zeichen im Python-Bereich ()

Bisher haben wir Ganzzahlen in Python range() verwendet. Wir haben auch gesehen, dass Gleitkommazahlen in Python range() nicht unterstützt werden. Lassen Sie uns versuchen, die Ausgabe zu sehen, was passiert, wenn wir Zeichen verwenden.

Ejemplo:

for c in range ('z'):
        print(c, end =" ")

Ausgang:

Traceback (most recent call last):
  File "python_range.py", line 1, in <module>
    for c in range ('z'):
TypeError: 'str' object cannot be interpreted as an integer

Es wird ein Fehler ausgegeben, der besagt, dass eine Zeichenfolge nicht als Ganzzahl interpretiert werden kann.

Um die Liste der Alphabete zu erhalten, können Sie den Code anpassen und die gewünschte Ausgabe erhalten, wie unten gezeigt:

Ejemplo:

def get_alphabets(startletter, stopletter, step):
    for c in range(ord(startletter.lower()), ord(stopletter.lower()), step):
        yield chr(c)

print(list(get_alphabets("a", "h", 1)))

Ausgang:

['a', 'b', 'c', 'd', 'e', 'f', 'g']

So greifen Sie auf Bereichselemente zu

Sie können eine for-Schleife verwenden, um die Werte aus dem Bereich abzurufen, oder den Index verwenden, um über range() auf die Elemente zuzugreifen.

For-Schleife verwenden

Ejemplo:

for i in range(6):
    print(i)

Ausgang:

0
1
2
3
4
5

Mit Index

Der Index wird mit Bereich verwendet, um den an dieser Position verfügbaren Wert abzurufen. Wenn der Bereichswert 5 ist, können Sie zum Erhalten des Startwerts range(5)[0] und den nächsten Wert range(5)[1] usw. verwenden.

Ejemplo:

startvalue = range(5)[0] 
print("The first element in range is = ", startvalue) 

secondvalue = range(5)[1] 
print("The second element in range is = ", secondvalue) 

lastvalue = range(5)[-1]
print("The first element in range is = ", lastvalue)

Ausgang:

The first element in range is =  0
The second element in range is =  1
The first element in range is =  4

Verwenden von list()

Diese Methode druckt alle Elemente aus range(). Mit list() werden die Elemente von range() im Listenformat zurückgegeben.

Ejemplo:

print(list(range(10)))

Ausgang:

 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

Es gibt die Listenausgabe für den angegebenen Bereich.

Beispiel: Erhalten Sie gerade Zahlen mit range()

Die Funktion `range()` gibt die Liste der geraden Zahlen im angegebenen Bereich zurück. Die Parameter für `range()` sind: `start` = 2, `stop` = 20 und `step` = 2. Die Werte werden also jeweils um 2 erhöht, sodass die Liste der geraden Zahlen bis `stop-2` angezeigt wird.

Ejemplo:

for i in range(2, 20, 2):
    print(i, end =" ")

Ausgang:

2 4 6 8 10 12 14 16 18

Zwei-Range()-Ausgaben zusammenführen

In diesem Beispiel verketten wir zwei range()-Funktionen mithilfe der chain()-Funktion des itertools-Moduls.

Ejemplo:

from itertools import chain

print("Merging two range into one")
frange =chain(range(10), range(10, 20, 1))
for i in frange:
    print(i, end=" ")

Ausgang:

Merging two range into one
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

Verwenden von range() mit NumPy

Das NumPy-Modul verfügt über eine Funktion `arange()`, die ähnlich wie `range()` funktioniert und eine vergleichbare Ausgabe liefert. `arange()` akzeptiert dieselben Parameter wie `range()`.

Syntax:

arange(start, stop, step)

Um mit NumPy zu arbeiten, befolgen Sie die unten angegebenen Schritte.

Schritt 1:: NumPy-Modul importieren

import numpy

Falls während der Ausführung eine Fehlermeldung erscheint, dass das NumPy-Modul nicht gefunden wurde, müssen Sie das Modul wie in Schritt 2 beschrieben installieren.

Schritt 2:: Installieren Sie NumPy

pip install numpy

Schritt 3:: Arbeitsbeispiel von arange() mit NumPy

import numpy as np

for  i in np.arange(10):
   print(i, end =" ")  

Ausgang:

0 1 2 3 4 5 6 7 8 9

Gleitkommazahlen mit NumPy arange()

Mit range() ist es nicht möglich, die Gleitkomma-Sequenz zu erhalten, wohl aber mit NumPy arange().

Ejemplo:

Der gewünschte Wertebereich liegt zwischen 0.5 und 1.5. Der Wert wird in Schritten von 0.2 erhöht.

import numpy as np

for  i in np.arange(0.5, 1.5, 0.2):
   print(i, end =" ")  

Ausgang:

0.5 0.7 0.8999999999999999 1.0999999999999999 1.2999999999999998

Die Ausgabe ist etwas ungewöhnlich; manche Gleitkommazahlen werden mit 16 Nachkommastellen angezeigt. Dies liegt an der Komplexität der Speicherung von Dezimalzahlen im Binärformat. Sie können die Werte bei Bedarf runden und auf die benötigte Anzahl an Nachkommastellen beschränken.

Häufig gestellte Fragen

In Python 3. Die Funktion `range()` gibt ein unveränderliches Bereichsobjekt zurück, keine Liste. Sie generiert Zahlen bei Bedarf. Verwenden Sie `list(range(n))`, wenn Sie eine tatsächliche Liste benötigen. Python 2 lieferte eine vollständige Liste.

Der Stoppwert ist exklusiv, sodass `range(len(items))` sauber auf nullbasierte Indizes abgebildet wird. Um den Endpunkt einzuschließen, addieren Sie eins zum Stoppwert, z. B. `range(1, 11)`, um von 1 bis 10 zu zählen.

Nein. Der Aufruf von `range(0, 10, 0)` führt zu einem `ValueError`: Das dritte Argument von `range()` darf nicht null sein, da ein Schritt von null niemals den Endwert erreichen und eine Endlosschleife erzeugen könnte. Verwenden Sie stattdessen einen positiven oder negativen Schritt.

Die Funktion `range()` lehnt Gleitkommazahlen ab, aber eine List Comprehension kann ganze Zahlen skalieren: `[x * 0.5 for x in range(0, 6)]` liefert Werte von 0.0 bis 2.5. Dadurch wird der Import von NumPy vermieden und gleichzeitig eine Schrittweite erreicht.ping durch Dezimalwerte.

Ja. Ein Bereichsobjekt speichert nur seine Start-, Stopp- und Schrittwerte, daher benötigt range(1000000) genauso wenig Speicherplatz wie range(10). Die Werte werden während der Iteration nacheinander berechnet.

Verwenden Sie den in-Operator: 5 in range(0, 10) gibt True zurück. Für Bereichsobjekte gilt: Python führt diesen Zugehörigkeitstest mit schneller Arithmetik in konstanter Zeit durch, anstatt jedes Element zu scannen, sodass er auch bei riesigen Bereichen effizient bleibt.

Im Code für maschinelles Lernen wird `range()` verwendet, um Trainingsepochen zu durchlaufen, Mini-Batches zu iterieren und Hyperparameter-Gitter zu erstellen. Die NumPy-Funktionen `arange()` und `linspace()` erweitern dies auf Gleitkommabereiche für Lernratenpläne und Schwellenwertdurchläufe, die in KI-Experimenten häufig vorkommen.

Ja. KI-basierte Programmierassistenten wie GitHub Copilot vervollständigen range()-basierte Schleifen automatisch anhand eines Kommentars oder Funktionsnamens, und agentenbasierte Tools können Indexschleifen in sauberere enumerate()- oder Comprehension-Muster umwandeln, obwohl die generierten Grenzen dennoch einer kurzen Überprüfung bedürfen.

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: