Pythons range()-Funktion meistern: Von Grundlagen bis zu fortgeschrittenen Anwendungsfällen
Pythons range()-Funktion meistern: Von Grundlagen bis zu fortgeschrittenen Anwendungsfällen
Was ist Python range?
Pythons range() ist ein eingebauter Generator, der eine Folge von Ganzzahlen basierend auf Start-, Stopp- und optionalen Schrittwerten erzeugt. Wenn der Startwert weggelassen wird, ist er standardmäßig 0, und die Sequenz inkrementiert um 1, bis sie den Stoppwert erreicht (exklusiv). Zum Beispiel liefert range(5) die Werte 0, 1, 2, 3, 4. Die Funktion ist unverzichtbar beim Iterieren mit for-Schleifen.
In diesem Tutorial lernen Sie:
- Definition und Syntax von
range() - Historie:
range()vs.xrange() - Verwendung von
range()mit Start, Stopp und Schritt - Inkrementieren und Dekrementieren von Bereichen
- Umgang mit Gleitkomma-Grenzen und Alternativen
- Verwendung von
range()mit Listen, Arrays und NumPy'sarange() - Fortgeschrittene Muster: Bereiche zusammenführen, gerade Zahlen extrahieren, Alphabet-Sequenzen generieren
Syntax
range(start, stop, step)
Parameter
- start (optional): Die erste Ganzzahl in der Sequenz. Standardwert ist 0, wenn weggelassen.
- stop (erforderlich): Die obere Schranke (exklusiv). Die Sequenz stoppt vor diesem Wert.
- step (optional): Der Intervall zwischen aufeinanderfolgenden Werten. Standardwert ist 1.
Rückgabewert
Gibt ein range-Objekt zurück, das sich wie eine unveränderliche Sequenz von Ganzzahlen verhält. Bei Konvertierung in eine Liste zeigt es die vollständige Sequenz an.
Python range()-Funktion und Historie
In Python 3 eingeführt, ersetzte range() das ältere xrange() aus Python 2. Die wesentlichen Unterschiede sind unten zusammengefasst:
| range() | xrange() |
|---|---|
| Gibt eine unveränderliche Sequenz von Zahlen zurück. | Gibt ein Generator-Objekt zurück. |
| Verbraucht Speicher proportional zur Sequenzlänge. | Verbraucht minimalen Speicher; erzeugt Werte lazy. |
| Geeignet für kleine bis mittelgroße Bereiche. | Bevorzugt für große Bereiche oder unendliche Sequenzen. |
| Langsamer bei sehr großen Bereichen durch Speicherallokation. | Schneller bei Iteration über große Bereiche. |
Verwendung von range()
Unten ist ein einfaches Beispiel, das Zahlen von 0 bis 9 ausgibt:
for i in range(10):
print(i, end=" ")
Ausgabe:
0 1 2 3 4 5 6 7 8 9
Start und Stopp in range() verwenden
Die Angabe eines Startwerts verschiebt die Sequenz:
for i in range(3, 10):
print(i, end=" ")
Ausgabe:
3 4 5 6 7 8 9
Start, Stopp und Schritt verwenden
Durch Hinzufügen eines Schritts können Sie den Intervall zwischen Zahlen steuern:
for i in range(3, 10, 2):
print(i, end=" ")
Ausgabe:
3 5 7 9
Werte mit positivem Schritt inkrementieren
Der Standardschritt ist 1, aber Sie können jede positive Ganzzahl angeben:
for i in range(1, 30, 5):
print(i, end=" ")
Ausgabe:
1 6 11 16 21 26
Umgekehrter Bereich: Dekrementieren mit negativem Schritt
Ein negativer Schritt erstellt eine absteigende Sequenz:
for i in range(15, 5, -1):
print(i, end=" ")
Ausgabe:
15 14 13 12 11 10 9 8 7 6
Gleitkommazahlen in Python range() verwenden
Das eingebaute range() akzeptiert nur Ganzzahlen. Der Versuch, einen Float zu übergeben, löst einen TypeError aus:
for i in range(10.5):
print(i, end=" ")
Ausgabe:
Traceback (most recent call last): File "python_range.py", line 1, infor i in range(10.5): TypeError: 'float' object cannot be interpreted as an integer
for-Schleife mit Python range() verwenden
Range wird oft mit len() kombiniert, um über Listen-Indizes zu iterieren:
arr_list = ['MySQL', 'MongoDB', 'PostgreSQL', 'Firebase']
for i in range(len(arr_list)):
print(arr_list[i], end=" ")
Ausgabe:
MySQL MongoDB PostgreSQL Firebase
Python range() als Liste verwenden
Die Konvertierung eines range in eine Liste ist unkompliziert:
print(list(range(10)))
Ausgabe:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Zeichen in Python range() verwenden
Während range() nur mit Ganzzahlen funktioniert, können Sie Alphabet-Sequenzen erzeugen, indem Sie Zeichen in ihre Unicode-Codepoints umwandeln:
def alphabete_erhalten(startbuchstabe, stopbuchstabe, schritt):
for c in range(ord(startbuchstabe.lower()), ord(stopbuchstabe.lower()), schritt):
yield chr(c)
print(list(alphabete_erhalten("a", "h", 1)))
Ausgabe:
['a', 'b', 'c', 'd', 'e', 'f', 'g']
Wie man auf Bereichs-Elemente zugreift
Sie können Werte über Iteration, Indizierung oder Konvertierung in eine Liste abrufen:
Iteration
for i in range(6):
print(i)
Ausgabe:
0 1 2 3 4 5
Indizierung
startwert = range(5)[0]
print("Das erste Element im Bereich ist = ", startwert)
zweiterwert = range(5)[1]
print("Das zweite Element im Bereich ist = ", zweiterwert)
letzterwert = range(5)[-1]
print("Das letzte Element im Bereich ist = ", letzterwert)
Ausgabe:
Das erste Element im Bereich ist = 0 Das zweite Element im Bereich ist = 1 Das letzte Element im Bereich ist = 4
list() verwenden
print(list(range(10)))
Ausgabe:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Beispiel: Gerade Zahlen mit range() erhalten
Um gerade Zahlen bis 18 zu erzeugen:
for i in range(2, 20, 2):
print(i, end=" ")
Ausgabe:
2 4 6 8 10 12 14 16 18
Zwei range()-Ausgaben zusammenführen
Das Kombinieren zweier range-Objekte kann mit itertools.chain erfolgen:
from itertools import chain
print("Zwei ranges zu einem zusammenführen")
frange = chain(range(10), range(10, 20, 1))
for i in frange:
print(i, end=" ")
Ausgabe:
Zwei ranges zu einem zusammenführen 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
range() mit NumPy verwenden
NumPy's arange() spiegelt range() wider, unterstützt aber Gleitkomma-Schritte:
Syntax
arange(start, stop, step)
Beispiel
import numpy as np
for i in np.arange(10):
print(i, end=" ")
Ausgabe:
0 1 2 3 4 5 6 7 8 9
Gleitkomma-Bereich mit NumPy
for i in np.arange(0.5, 1.5, 0.2):
print(i, end=" ")
Ausgabe:
0.5 0.7 0.8999999999999999 1.0999999999999999 1.2999999999999998
Da Gleitkomma-Arithmetik binär ist, zeigt die Ausgabe manchmal lange Dezimalentwicklungen. Sie können die Werte nach Bedarf runden.
Zusammenfassung
- range() erzeugt eine Ganzzahl-Sequenz definiert durch Start, Stopp und Schritt.
- In Python 3 eingeführt; xrange() war der Vorgänger in Python 2.
- Positiven Schritt für aufsteigende Sequenzen, negativen für absteigende verwenden.
- Gleitkommazahlen werden nicht unterstützt; nutzen Sie NumPy arange() für Floats.
- Auf Elemente über Iteration, Indizierung oder
list()-Konvertierung zugreifen. - Bereiche mit
itertools.chainkombinieren oder benutzerdefinierte Sequenzen wie Alphabete generieren. - Für große numerische Bereiche das Generator-Verhalten für Speichereffizienz berücksichtigen.
Python
- Python-Funktionsargumente meistern: Positional, Keyword & Default-Parameter
- Python Lambda-Funktionen: Praxisleitfaden zu anonymen Funktionen
- Python Generatoren: Effiziente Iteration und fortgeschrittene Anwendungsfälle
- Python Lambda-Funktionen meistern: Praxisbeispiele & Best Practices
- Python abs()-Funktion: Absolutwerte für Zahlen & Komplexe Zahlen berechnen
- Python round()-Funktion erklärt mit praktischen Beispielen
- Pythons range()-Funktion meistern: Von Grundlagen bis zu fortgeschrittenen Anwendungsfällen
- Pythons map()-Funktion meistern: Syntax, Beispiele und Best Practices
- Pythons enumerate() meistern: Schleifen mit Indizes für Listen, Tupel, Strings und Dictionaries
- Python list.count(): Experten-Guide mit praktischen Beispielen