Python Range () Funktion: Tutorial mit Beispielen (2024)

Die Funktion Python Range () kann verwendet werden, um Sequenzen von Zahlen zu erstellen.Die Funktion range () kann seiniteriertund ist ideal in Kombination mit For-Schleifen.In diesem Artikel wird die Python -Bereichsfunktion genau untersucht:

  • Was ist es?
  • So verwenden Sie Bereich ()
  • So erstellen Sie für Schleifen mit der Funktion range ()

Ich werde Ihnen auch zeigen, wie Sie Bereiche in For-Schleifen verwenden, um eine gewünschte Schleife zu erstellen, einschließlich:

  • Regelmäßige Schleifen über einen zunehmenden Zahlenbereich
  • Schleifen, die rückwärts gehen (z. B. von 10 bis 0)
  • Schleifen, die Werte überspringen

Inhaltsverzeichnis

  • 1 Was ist die Python -Bereichsfunktion?
  • 2 So verwenden Sie Python Range
  • 3 Wie ein Python -Bereich funktioniert
  • 4 Python Range vs. List
  • 5 Python -Bereiche in der Praxis
  • 6 Schlussfolgerung

Was ist die Python -Bereichsfunktion?

PythonReichweitefungiert als integrierte Funktion und wird üblicherweise zum Looping einer bestimmten Anzahl von Male in verwendetfür Schleifen.Wie viele Dinge in Python ist es tatsächlich ein Python-Typ (oder eine Klasse), aber wenn wir ihn in einer Schleife verwenden, können wir ihn wie eine integrierte Funktion behandeln, die ein iterables Objekt zurückgibt.

Range bietet uns eine berechnete Folge von Zahlen, die auf unserer Eingabe basieren.Es gibt drei Möglichkeiten, die Bereichsfunktion aufzurufen:

# Mit einem ganzzahligen Argument zählt## von 0 bis StoppRange (Stopp)# mit zwei Ganzzahl -Argumenten. Es zählt von Start bis Stop -Range (Start, Stopp)# mit drei Ganzzahlargumenten, die es von Anfang an zählt,## mit einem definierten SchrittSizerange (Start, Stopp, Schritt)

Die Argumente beginnen, stoppen und Schritt sind immer Ganzzahlen.Wenn wir den Bereich nennen, gibt es ein Objekt von zurückKlasse Reichweite.Dieses Bereich kann wiederum a liefernPython Iterator, was bedeutet, dass wir über seine Werte schauen können (iterieren).Der Bereich Iterator berechnet bei jedem Anruf einen neuen Wert.Dieser Wert basiert auf Start-, Stopp- und Stufenwerten.

Wenn das schwierig klingt: ist es so.Wenn Sie Iteratoren und Iterabilität nicht vollständig verstehen, haben Sie zu diesem Zeitpunkt zwei Optionen:

  1. Lesen Sie weiter und sehen SieWieBereiche verwenden.Ich werde dich nicht beschuldigen.
  2. Lesen Sie aufIteratoren und IterablesZuerst und dann zurück zurück.

Wenn Sie Python richtig lernen möchten, rate ich Ihnen, sich selbst einen Gefallen zu tun und Option zwei auszuwählen.

So verwenden Sie Python Range

Es gibt drei Möglichkeiten, den Bereich zu verwenden.Wir werden uns alle drei im Detail ansehen, beginnend mit dem einfachsten Anwendungsfall.Um die Python -Bereichsfunktion gründlich zu verstehen, zeige ich Ihnen genau, wie ein Bereich später intern funktioniert.Es ist ganz einfach!Es ist jedoch besser, Beispiele für die Verwendung von Bereichen zuerst zu betrachten, um eine bessere Vorstellung davon zu bekommen, wozu sie sind und zu denen sie fähig sind.

Bereich mit nur einem Stoppwert

Wenn wir anrufenReichweiteMit einem Argument ist dieses Argument der Stoppwert.In diesem Fall,Reichweitebeginnt mit 0 zu zählen, bis es den Stoppwert erreicht.

Zum Beispiel, wenn wir anrufenBereich (5)Das erstellte Bereichsobjekt gibt die Werte 0, 1, 2, 3 und 4 zurück, wenn wir darüber iterieren.Es ist also wichtig zu beachten:Die Reichweite stoppt, sobald er den Stoppwert erreicht, und gibt den Stop -Wert selbst nicht zurück.

Wenn das verwirrend klingt, wird es ein einfaches Beispiel hoffentlich klarstellen.Lassen Sie uns das verwendenReichweiteRufen Sie eine For-Schleife an:

Warum beinhaltet der Bereich nicht den Endwert?

Sie fragen sich vielleicht warumReichweiteEnthält nicht den Endwert.Es kommt alles auf ein wichtiges Prinzip an, das genannt wirdNull-basierte Indexierung.Computer beginnen mit Null zu zählen, während die Menschen mit 1 Zählen von 1. Wenn ein Computer auf die Elemente Nummer 3 benötigt, beginnt er mit Element 0, dann 1 und dann.Beim Zugriff auf Elemente in aPython -ListeDas erste Element liegt an Position 0. Wir würden so zugänglich darauf zugreifen:my_list [0].

Aufgrund dieser nullbasierten Indexierung ist es einfacher, wenn die Python-Bereiche auch mit Null zählen.Wenn Sie mithilfe eines Bereichs etwas durchlaufen möchten, möchten Sie wahrscheinlich bei Element Null beginnen.

Bereich mit Start- und Stoppwert

Wir möchten nicht immer mit dem Zählen von Null beginnen, und deshalb können wir auch Reichweite sowohl mit einem Start- als auch mit Stoppwert aufrufen.Ein Anruf zum Bereich (2, 5) gibt die Werte 2, 3 und 4. zurück. Hier ist ein weiteres Beispiel:

Bereich mit einer positiven Schrittgröße

Endlich,Reichweite() Nimmt ein optionales Argument, das als Schrittgröße bezeichnet wird.Die Schrittgröße definiert, wie groß jeder Schritt zwischen den berechneten Zahlen ist.Es ist am besten, dies zu veranschaulichen:

für i im Bereich (0, 6, 2): Druck (i, end = "")# Ausgabe lautet: 0 2 4

Jeder Schritt überspringt eine Zahl, da die Schrittgröße zwei beträgt.Lassen Sie uns die Schrittgröße erhöhen:

Für i im Bereich (0, 101, 10): Druck (i, end = "")# Ausgabe lautet:# 0 10 20 30 40 50 60 70 80 90 100

Weil wir setzenstoppenbis 101 ist der Wert 100 auch in diesem Bereich enthalten.

Bereich mit einer negativen Schrittgröße

Bereiche können auch rückwärts zählen.Wenn wir die Schrittgröße auf eine negative Zahl einstellen, zählt der Bereich rückwärts.Wenn wir rückwärts zählen wollen, müssen wir sicherstellen, dass der Wert für den WertStartIstgrößerals der Wert fürEnde.Hier ist ein Beispiel:

Für i im Bereich (5, 0, -1): Druck (i, end = "")# Ausgabe ist:# 5 4 3 2 1

Wir begannen bei 5 und zählten rückwärts auf 0. Da die Bereiche nicht den Endwert enthalten, war 0 nicht enthalten.Wenn Sie 0 einschließen möchten, müssen Sie einstellenEndebis 1.

Wie ein Python -Bereich funktioniert

Nachdem Sie Reichweite in Aktion gesehen haben, werde ich Ihnen sagen, wie die Bereiche intern funktionieren, um sie am besten zu verstehen.Es ist nicht viel Magie!

Ein Bereich ist ein iterables Objekt, und dieses Objekt kann einen Iterator zurückgeben, der den aktuellen Zustand im Auge behält.Angenommen, wir erstellen einen Bereich mit dem AnrufBereich (3).Dies gibt ein Objekt vom Typ Reichweite mit unseren angeforderten Einstellungen zurück.Innen setzt ein Python -Bereich die folgenden internen Variablen:

  • der Startwert auf 0,,
  • der Endwert zu 3,,
  • und den Schrittwert zum Standardwert von 1.

Wenn wir mit der Iteration eines Bereichsobjekts beginnen, gibt das Bereichsobjekt einen Iterator zurück. Dieser Iterator verwendet die oben definierten Werte, verfügt jedoch über ein Extra: eine Zählervariableich, das wird standardmäßig auf 0 initialisiert und erhöht sich bei jeder Iteration.

Bei jedem Anruf beim Iterator, um die nächste Nummer zu erhalten, betrachtet der Bereich seinen internen Zustand und berechnet die nächste zurückgegebene Nummer.Der nächste Wert wird so berechnet:

Weiter = Start + Schritt*i.

Standardmäßig geht der Bereich Schritte der ersten Größe aus:

  • Auf dem ersten Anruf lautet die Berechnung, die durchgeführt wird, folgendermaßen:0 + 1*0 == 0.Reichweite kehrt 0 und der Zähler zurückichwird um 1 erhöht, macheni == 1
  • Beim 2. Anruf wird mit seinem aktuellen Zustand die gleiche Berechnung durchgeführt:0 + 1*1 = 1.Es erhöht wieder den Thekeichzu 2.
  • Der 3. Anruf gibt 2 zurück, da seitdem0 + 1*2 == 2.
  • Wir haben jetzt das Ende des Bereichs erreicht.Wie in meinem Artikel über erläutertPython -Iteratoren, jeder folgende Aufruf des Iterators gibt a zurückStopperation Ausnahme, signalisiert, dass es keine Elemente mehr gibt.

Wenn Sie Ihrem Bereich eine Schrittgröße von 2 mit gebenBereich (0, 5, 2)Sie können die Berechnungen von oben wiederholen und feststellen, dass die zurückgegebenen Werte jetzt: 0, 2 und 4 sind.

Mit Code demonstriert

Wir können diesen Prozess mit einem Code demonstrieren.Im folgenden Beispiel erstellen wir zunächst ein Bereichsobjekt.Als Nächstiter ()Funktion.Wir fordern den nächsten Wert mithilfe einer anderen integrierten Funktion an:nächste(). Nach drei Aufrufen sehen Sie, dass das Iterable erschöpft ist und mit der Erhöhung beginntStopperationAusnahmen:

my_range = Bereich (0, 3)# Erhalten Sie das iterable.In einer Schleife wird dieser Handbuch# nicht benötigtmy_iter = iter (my_range)# Anforderungswerte aus dem iterablePrint (next (my_iter))# 0print (next (my_iter))# 1print (next (my_iter))# 2print (next (my_iter))# bringt eine Ausnahme in der Stopperation aus

Wenn Sie möchten, können Sie diesen Code auch für sich ausführen:

Python-Bereich: Iterierbar oder Iterator?

Ein Bereichsobjekt ist ein iterierbares, was bedeutet, dass es sich um ein Objekt handelt, das einen Iterator zurückgeben kann.Wie im obigen Beispiel zu sehen ist, können wir diesen Iterator manuell mit der iter () -Funktion erhalten.Wenn der Iterator in einer For-Schleife verwendet wird, wird er automatisch von der Schleife angefordert und alles erledigt.

Das Bereichsobjekt (das iterable) gibt einen neuen Iterator für jeden Anruf zurück.Obwohl wir also nicht so verwenden, können wir tatsächlich ein Reichweite Objekt verwenden, indem wir neue Iteratoren daraus anfordern.Um dies ausführlich zu verstehen, lesen Sie weiterIterables und Iteratoren.

Python Range vs. List

Bereiche bieten gegenüber Listen einen großen Vorteil: Sie benötigen eine konstante, vorhersehbare Speichermenge, da sie im laufenden Betrieb berechnet werden. Alles, was ein Bereich im Auge behalten muss, sind der Start-, Stopp-, End- und Iterationszähler. Range(1000) benötigt also die gleiche Menge an Speicher wie Range(1).

Im Gegensatz: Eine Liste mit den Werten 0 bis 999 dauert tausendmal mehr Speicher als eine Liste mit nur dem Wert 1.

In Python 2 war dies nicht der Fall.Der reguläre Bereich würde in eine tatsächliche Liste von Zahlen eingehen.Irgendwann wurde XRange eingeführt.In Python 3 wurde entschieden, dass Xrange der Standard für Bereiche werden würde und der alte materialisierte Bereich fallen gelassen wurde.Darüber hinaus wurden einige zusätzliche Funktionen hinzugefügt, wie die Fähigkeit, Bereiche zu schneiden und zu vergleichen.

Der Name XRange existiert in Python 3 nicht. Wenn Sie darauf stoßen, sehen Sie sich wahrscheinlich den Python 2 -Code an.Ich habe einen Artikel zu diesem Thema erstellt, wenn Sie möchtenKonvertieren Sie es in den Python 3 -Code.

Python reicht in der Praxis

Was folgt, sind einige übliche und weniger häufige Operationen auf und mit Bereichen, die Sie in der Praxis möglicherweise benötigen, neben der Verwendung für Schleifen.

Reichweite in die Liste konvertieren

Wir haben erfahren, dass Bereiche berechnet werden, während Listen materialisiert werden.Manchmal möchten Sie eine Liste aus einem Bereich erstellen.Sie könnten dies mit einem For-Loop tun.Oder pythonischer und schneller: durch Verwendung von aPython -Liste Verständnis.Der beste Weg, dies zu tunListe()Funktion, die jedes iterable Objekt in eine Liste umwandeln kann, einschließlich der Bereiche:

my_list = list (Bereich (0, 3)) print (my_list)# [0, 1, 2]

Testen auf Mitgliedschaft

Bereiche verhalten sich wie eine reguläre Sammlung.Daher können wir sie auch auf die Mitgliedschaft zu einem bestimmten Wert testen.Z.B.Um zu testen, ob eine Zahl Teil eines Bereichs ist, können Sie dies tun:

my_number = 10print (my_number in Bereich (0, 11))# true

Reichweite

Obwohl ich nicht sicher bin, ob Sie dies jemals brauchen werden (ich habe es in der Praxis nie verwendet), ist diese Funktion ziemlich cool.Genau wie Sie Listen und andere Objekte mit einem Sequenztyp schneiden können, können Sie auch ein Bereichsobjekt schneiden.Wenn Sie dies tun, erwarten Sie möglicherweise, dass die Reichweite auf einer Liste materialisiert.Das ist nicht der Fall.Stattdessen wird ein neues Bereichsobjekt berechnet und zurückgegeben, wie Sie in den folgenden Beispielen auf dem sehen könnenPython Repl:

>>> Bereich (0, 5) [2: 4] Bereich (2, 4) >>> Bereich (0, 5) [4: 2: -1] Bereich (4, 2, -1) >>> Bereich(0, 10) [2: 8: 2] Bereich (2, 8, 2)

Vergleich von Bereichen

Schließlich können auch Bereiche verglichen werden.Beim Vergleich von Bereichen werden sie als Sequenzen verglichen.Sie könnten erwarten, dass Python nur überprüft, ob es sich um das gleiche Objekt handelt.Dies war früher wahr, bis Python 3.3 herauskam.Seitdem werden zwei verschiedene Bereiche, die zu derselben Sequenz führen, in Python als gleich angesehen.

Hier sind einige Beispiele zur Wiederholung:

>>> Bereich (0, 2) == Bereich (0, 3) Falsch >>> Bereich (0) == Bereich (4, 2) True

Im letzten Beispiel führt ein Bereich mit Start 4 und End 2 zu einem Bereich von Länge Null;Daher ist es gleich aBereich (0).

Abschluss

Sie haben etwas über Pythons Reichweite erfahren und wie man sie in einer Fürschließung benutzt.Darüber hinaus haben Sie auch gelernt, wie ein Bereich intern funktioniert.Neben diesen Grundlagen haben Sie gelernt, wie man einen Bereich in eine Liste umwandelt, die Bereiche verglichen und auf Mitgliedschaft getestet werden können und dass wir sogar einen Bereich in Scheiben schneiden können.

Wenn Sie mehr über Bereiche erfahren möchten, sind diese Ressourcen möglicherweise von Interesse:

Lernen Sie Python richtig durch kleine, leicht zu verdauende Lektionen, Fortschrittsverfolgung, Tests, um Ihr Wissen zu testen und Sitzungen zu üben.In jedem Kurs werden Sie ein herunterladbares Kurszertifikat erhalten.

Python Range () Funktion: Tutorial mit Beispielen (2024)
Top Articles
Latest Posts
Article information

Author: Jonah Leffler

Last Updated:

Views: 5992

Rating: 4.4 / 5 (45 voted)

Reviews: 84% of readers found this page helpful

Author information

Name: Jonah Leffler

Birthday: 1997-10-27

Address: 8987 Kieth Ports, Luettgenland, CT 54657-9808

Phone: +2611128251586

Job: Mining Supervisor

Hobby: Worldbuilding, Electronics, Amateur radio, Skiing, Cycling, Jogging, Taxidermy

Introduction: My name is Jonah Leffler, I am a determined, faithful, outstanding, inexpensive, cheerful, determined, smiling person who loves writing and wants to share my knowledge and understanding with you.