logo

range() vs xrange() i Python

range() og xrange() er to funktioner, der kan bruges til at iterere et bestemt antal gange i til sløjfer i Python. I Python3 , der er ingen xrange, men range-funktionen opfører sig som xrange i Python2. Hvis du vil skrive kode, der kører på både Python2 og Python3, skal du bruge range(). Begge er implementeret på forskellige måder og har forskellige karakteristika forbundet med dem. Sammenligningspunkterne er:

  • Returtype
  • Hukommelse
  • Drift Anvendelse
  • Fart

Python range() funktion

Det Python range() funktion returnerer en række tal i et givet interval. Den mest almindelige brug af det er at iterere sekvenser på en talfølge ved hjælp af Python-løkker.

Python xrange() funktion

Funktionen xrange() i Python bruges til at generere en talsekvens, der ligner Python range()-funktionen. Python xrange() bruges kun i Python 2.x, mens range()-funktionen i Python bruges i Python 3.x.



Retur Indtast range() vs xrange()

Det her xrange() funktion returnerer generatorobjekt som kun kan bruges til at vise tal ved at loope. Det eneste bestemte område vises efter behov og kaldes derfor doven evaluering , hvorimod funktionen i Python range() returnerer et områdeobjekt (en type iterable).

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

>

java lang til streng
>

Produktion:

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

Hastighed af xrange() og range() Funktion

Variablen, der lagrer rækkevidde oprettet af range() tager mere hukommelse sammenlignet med variablen, der gemmer området ved hjælp af xrange(). Den grundlæggende årsag til dette er returtypen for range() er liste og xrange() er 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))>

udefineret hældning
>

>

Produktion:

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

Operationer Brug af xrange() og range() Funktion

En range() returnerer listen, alle de operationer, der kan anvendes på listen, kan bruges på den. På den anden side, da xrange() returnerer xrange-objektet, operationer forbundet med listen kan ikke anvendes på dem, og derfor en ulempe.

Python3


aws rødforskydning



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

>

>

Fejl:

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

Produktion:

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

Forskellen mellem range() og xrange() i Python

På grund af det faktum, at xrange() kun evaluerer generatorobjektet, der kun indeholder de værdier, der kræves af doven evaluering, er det derfor hurtigere i implementering end range().

Vigtige punkter:

  • Hvis du vil skrive kode, der kører på både Python 2 og Python 3, skal du bruge range(), da xrange-funktionen er forældet i Python 3.
  • range() er hurtigere, hvis der gentages over den samme sekvens flere gange.
  • xrange() skal rekonstruere heltalsobjektet hver gang, men range() vil have rigtige heltalsobjekter. (Det vil dog altid fungere dårligere med hensyn til hukommelse)

rækkevidde()

xrange()

Returnerer en liste over heltal. Returnerer et generatorobjekt.
Udførelseshastigheden er langsommere Udførelseshastigheden er hurtigere.
Tager mere hukommelse, da det holder hele listen af ​​elementer i hukommelsen. Tager mindre hukommelse, da den kun beholder ét element ad gangen i hukommelsen.
Alle aritmetiske operationer kan udføres, da det returnerer en liste. Sådanne operationer kan ikke udføres på xrange().
I python 3 er xrange() ikke understøttet. I python 2 bruges xrange() til at iterere i for loops.