logo

range() vs xrange() i Python

Range() og xrange() er to funksjoner som kan brukes til å iterere et visst antall ganger i til løkker i Python. I Python3 , det er ingen xrange, men range-funksjonen oppfører seg som xrange i Python2. Hvis du vil skrive kode som skal kjøres på både Python2 og Python3, bør du bruke range(). Begge er implementert på ulike måter og har ulike egenskaper knyttet til seg. Sammenligningspunktene er:

  • Returtype
  • Hukommelse
  • Driftsbruk
  • Hastighet

Python range() funksjon

De Python range() funksjon returnerer en rekke tall i et gitt område. Den vanligste bruken av det er å iterere sekvenser på en tallsekvens ved å bruke Python-løkker.



Python xrange() funksjon

xrange()-funksjonen i Python brukes til å generere en tallsekvens som ligner på Python range()-funksjonen. Python xrange() brukes bare i Python 2.x, mens range()-funksjonen i Python brukes i Python 3.x.

Retur Skriv inn range() vs xrange()

Dette xrange() funksjonen returnerer generatorobjekt som kan brukes til å vise tall bare ved sløyfe. Det eneste bestemte området vises på forespørsel og kalles derfor opp lat evaluering , mens funksjonen 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))>

>

rekke strenger c programmering
>

Produksjon:

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

Hastighet til xrange() og range() Funksjon

Variabelen som lagrer område opprettet av range() tar mer minne sammenlignet med variabelen som lagrer området ved å bruke xrange(). Den grunnleggende årsaken 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))>

Rajinikanth
>

>

Produksjon:

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

Operasjoner Bruk av funksjonen xrange() og range().

En range() returnerer listen, alle operasjonene som kan brukes på listen kan brukes på den. På den annen side, ettersom xrange() returnerer xrange-objektet, operasjoner knyttet til listen kan ikke brukes på dem, derav en ulempe.

Python3


sed kommando



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

>

>

Feil:

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

Produksjon:

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

Forskjellen mellom range() og xrange() i Python

På grunn av det faktum at xrange() evaluerer bare generatorobjektet som bare inneholder verdiene som kreves av lat evaluering, er derfor raskere i implementering enn range().

Viktige punkter:

  • Hvis du vil skrive kode som vil kjøre på både Python 2 og Python 3, bruk range() ettersom xrange-funksjonen er utdatert i Python 3.
  • range() er raskere hvis den itererer over samme sekvens flere ganger.
  • xrange() må rekonstruere heltallsobjektet hver gang, men range() vil ha reelle heltallsobjekter. (Det vil imidlertid alltid fungere dårligere når det gjelder hukommelse)

område()

xrange()

Returnerer en liste over heltall. Returnerer et generatorobjekt.
Utførelseshastigheten er lavere Utførelseshastigheten er raskere.
Tar mer minne ettersom den holder hele listen over elementer i minnet. Tar mindre minne da det bare beholder ett element om gangen i minnet.
Alle aritmetiske operasjoner kan utføres ettersom den returnerer en liste. Slike operasjoner kan ikke utføres på xrange().
I python 3 støttes ikke xrange(). I python 2 brukes xrange() til å iterere inn for løkker.