logo

range() vs. xrange() in Python

Die Funktionen „range()“ und „xrange()“ sind zwei Funktionen, die zum Durchlaufen einer bestimmten Anzahl von Malen verwendet werden können für Schleifen in Python. In Python3 gibt es kein xrange, aber die Range-Funktion verhält sich wie xrange in Python2. Wenn Sie Code schreiben möchten, der sowohl auf Python2 als auch auf Python3 läuft, sollten Sie range() verwenden. Beide werden auf unterschiedliche Weise implementiert und sind mit unterschiedlichen Eigenschaften verbunden. Die Vergleichspunkte sind:

  • Rückgabetyp
  • Erinnerung
  • Betriebsnutzung
  • Geschwindigkeit

Python-Range()-Funktion

Der Python-Range()-Funktion gibt eine Folge von Zahlen in einem bestimmten Bereich zurück. Die häufigste Verwendung besteht darin, Sequenzen auf einer Zahlenfolge mithilfe von Python-Schleifen zu iterieren.



Python xrange()-Funktion

Die xrange()-Funktion in Python wird zum Generieren einer Zahlenfolge verwendet, ähnlich der Python-range()-Funktion. Die Python-Funktion xrange() wird nur in Python 2.x verwendet, während die Funktion range() in Python in Python 3.x verwendet wird.

Rückgabetyp in range() vs. xrange()

Das xrange() Funktion gibt die zurück Generatorobjekt das zur Anzeige von Zahlen nur durch Schleifen verwendet werden kann. Der einzige bestimmte Bereich wird bei Bedarf angezeigt und somit aufgerufen faule Bewertung , wohingegen in Python die Funktion range() ein Bereichsobjekt (eine Art iterierbares Objekt) zurückgibt.

Python3








# initializing a with range()> a>=> range>(>1>,>10000>)> # initializing a with xrange()> x>=> xrange>(>1>,>10000>)> # testing the type of a> print>(>'The return type of range() is : '>)> print>(>type>(a))> # testing the type of x> print>(>'The return type of xrange() is : '>)> print>(>type>(x))>

>

MySQL hat den Beitritt verlassen
>

Ausgabe:

The return type of range() is :   The return type of xrange() is :>

Geschwindigkeit der Funktionen xrange() und range()

Die Variable, die die speichert Reichweite erstellt von range() benötigt mehr Speicher im Vergleich zur Variablen, die den Bereich mit xrange() speichert. Der Hauptgrund dafür ist, dass der Rückgabetyp von range() eine Liste und xrange() ein xrange()-Objekt ist.

Python3




import> sys> # initializing a with range()> a>=> range>(>1>,>10000>)> # initializing a with xrange()> x>=> xrange>(>1>,>10000>)> # testing the size of a> # range() takes more memory> print> (>'The size allotted using range() is : '>)> print> (sys.getsizeof(a))> # testing the size of x> # xrange() takes less memory> print> (>'The size allotted using xrange() is : '>)> print> (sys.getsizeof(x))>

Länge der Zeichenfolge Java
>

>

Ausgabe:

The size allotted using range() is :  80064 The size allotted using xrange() is :  40>

Operationen Verwendung der Funktionen xrange() und range()

Ein range() gibt die Liste aller Operationen zurück dürfen auf die Liste angewendet werden kann, kann darauf verwendet werden. Da xrange() andererseits das xrange-Objekt zurückgibt, werden mit der Liste verknüpfte Operationen ausgeführt kann nicht auf sie angewendet werden, daher ein Nachteil.

Python3




Schlaf in js
# initializing a with range()> a>=> range>(>1>,>6>)> # initializing a with xrange()> x>=> xrange>(>1>,>6>)> # testing usage of slice operation on range()> # prints without error> print> (>'The list after slicing using range is : '>)> print> (a[>2>:>5>])> # testing usage of slice operation on xrange()> # raises error> print> (>'The list after slicing using xrange is : '>)> print> (x[>2>:>5>])>

>

>

Fehler:

Traceback (most recent call last):  File '1f2d94c59aea6aed795b05a19e44474d.py', line 18, in   print (x[2:5]) TypeError: sequence index must be integer, not 'slice'>

Ausgabe:

The list after slicing using range is :  [3, 4, 5] The list after slicing using xrange is :>

Unterschied zwischen range() und xrange() in Python

Aufgrund der Tatsache, dass xrange() nur das Generatorobjekt auswertet, das nur die Werte enthält, die für die verzögerte Auswertung erforderlich sind, ist dies der Fall Schneller in der Implementierung als range().

Wichtige Punkte:

  • Wenn Sie Code schreiben möchten, der sowohl auf Python 2 als auch auf Python 3 läuft, verwenden Sie range(), da die xrange-Funktion in Python 3 veraltet ist.
  • range() ist schneller, wenn dieselbe Sequenz mehrmals durchlaufen wird.
  • xrange() muss das Integer-Objekt jedes Mal neu erstellen, aber range() verfügt über echte Integer-Objekte. (In Bezug auf den Speicher wird es jedoch immer eine schlechtere Leistung erbringen)

Reichweite()

xrange()

Gibt eine Liste von Ganzzahlen zurück. Gibt ein Generatorobjekt zurück.
Die Ausführungsgeschwindigkeit ist langsamer Die Ausführungsgeschwindigkeit ist schneller.
Benötigt mehr Speicher, da die gesamte Liste der Elemente im Speicher bleibt. Benötigt weniger Speicher, da immer nur ein Element im Speicher bleibt.
Alle arithmetischen Operationen können ausgeführt werden, da eine Liste zurückgegeben wird. Solche Operationen können nicht für xrange() ausgeführt werden.
In Python 3 wird xrange() nicht unterstützt. In Python 2 wird xrange() zum Durchlaufen von For-Schleifen verwendet.