logo

range() vs xrange() i Python

range() och xrange() är två funktioner som kan användas för att iterera ett visst antal gånger i för loopar i Python. I Python3 , det finns ingen xrange, men range-funktionen beter sig som xrange i Python2. Om du vill skriva kod som kommer att köras på både Python2 och Python3, bör du använda range(). Båda implementeras på olika sätt och har olika egenskaper förknippade med dem. Jämförelsepunkterna är:

  • Returtyp
  • Minne
  • Operation Användning
  • Fart

Python range() funktion

De Python range() funktion returnerar en talföljd inom ett givet intervall. Den vanligaste användningen av det är att iterera sekvenser på en nummersekvens med hjälp av Python-loopar.



Python xrange() funktion

Funktionen xrange() i Python används för att generera en talsekvens, liknande Python range()-funktionen. Python xrange() används endast i Python 2.x medan range()-funktionen i Python används i Python 3.x.

Retur Skriv in range() vs xrange()

Detta xrange() funktion returnerar generatorobjekt som kan användas för att visa siffror endast genom looping. Det enda specifika intervallet visas på begäran och anropas därför lat utvärdering , medan funktionen i Python range() returnerar ett områdesobjekt (en typ av iterabel).

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))>

>

städer i australien
>

Produktion:

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

Hastighet för xrange() och range() Funktion

Variabeln som lagrar räckvidd skapad av range() tar mer minne jämfört med variabeln som lagrar intervallet med xrange(). Den grundläggande anledningen till detta är returtypen range() är list och xrange() är xrange()-objekt.

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))>

triptig vinter
>

>

Produktion:

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

Operationer Användning av funktionen xrange() och range().

En range() returnerar listan, alla operationer som burk användas på listan kan användas på den. Å andra sidan, eftersom xrange() returnerar xrange-objektet, operationer associerade med listan kan inte tillämpas på dem, därav en nackdel.

Python3




# 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>])>

>

>

Fel:

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

Produktion:

skillnad mellan två strängar python
The list after slicing using range is :  [3, 4, 5] The list after slicing using xrange is :>

Skillnaden mellan range() och xrange() i Python

På grund av det faktum att xrange() endast utvärderar generatorobjektet som endast innehåller de värden som krävs av lat utvärdering, är därför snabbare i implementering än range().

Viktiga punkter:

  • Om du vill skriva kod som kommer att köras på både Python 2 och Python 3, använd range() eftersom xrange-funktionen är utfasad i Python 3.
  • range() är snabbare om den itererar över samma sekvens flera gånger.
  • xrange() måste rekonstruera heltalsobjektet varje gång, men range() kommer att ha verkliga heltalsobjekt. (Den kommer alltid att prestera sämre när det gäller minne, dock)

räckvidd()

xrange()

Returnerar en lista med heltal. Returnerar ett generatorobjekt.
Utförandehastigheten är långsammare Utförandehastigheten är snabbare.
Tar mer minne eftersom det håller hela listan med element i minnet. Tar mindre minne eftersom det bara behåller ett element åt gången i minnet.
Alla aritmetiska operationer kan utföras när de returnerar en lista. Sådana operationer kan inte utföras på xrange().
I python 3 stöds inte xrange(). I python 2 används xrange() för att iterera in för loopar.