logo

range() vs xrange() Pythonissa

Range() ja xrange() ovat kaksi funktiota, joita voidaan käyttää iteroimaan tietyn määrän kertoja varten silmukat Pythonissa. Sisään Python 3 , xrangea ei ole, mutta aluefunktio käyttäytyy kuten xrange Python2:ssa. Jos haluat kirjoittaa koodia, joka toimii sekä Python2:ssa että Python3:ssa, sinun tulee käyttää range(t). Molemmat toteutetaan eri tavoin ja niihin liittyy erilaisia ​​ominaisuuksia. Vertailukohdat ovat:

  • Palautustyyppi
  • Muisti
  • Toiminnan käyttö
  • Nopeus

Python range()-funktio

The Python range()-funktio palauttaa numerosarjan tietyllä alueella. Sen yleisin käyttö on sekvenssien iterointi numerosarjassa Python-silmukoiden avulla.



Python xrange() -funktio

Pythonin xrange()-funktiota käytetään numerosarjan luomiseen, joka on samanlainen kuin Python range()-funktio. Python xrange() -funktiota käytetään vain Python 2.x:ssä, kun taas Pythonin range()-funktiota käytetään Python 3.x:ssä.

Palautustyyppi alueella() vs xrange()

Tämä xrange() funktio palauttaa generaattoriobjekti jota voidaan käyttää numeroiden näyttämiseen vain silmukalla. Ainoa tietty alue näytetään pyynnöstä ja sitä kutsutaan siksi laiska arviointi , kun taas Python range()-funktio palauttaa alueobjektin (eräänlainen iteroitava).

Python 3








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

>

kapselointi java
>

Lähtö:

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

Xrange()- ja range()-funktion nopeus

Muuttuja, joka tallentaa alue luotu range() vie enemmän muistia verrattuna muuttujaan, joka tallentaa alueen käyttämällä xrange(). Perussyy tähän on palautustyyppi range() on lista ja xrange() on xrange()-objekti.

Python 3




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

java kuinka ohittaa
>

>

Lähtö:

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

Toiminnot Xrange()- ja range()-funktioiden käyttö

Range() palauttaa luettelon, kaikki toiminnot, jotka voi sovelletaan luettelossa voidaan käyttää siinä. Toisaalta, koska xrange() palauttaa xrange-objektin, luetteloon liittyvät toiminnot ei voi sovelletaan niihin, mikä on haitta.

Python 3




joukko objekteja javassa

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

>

>

Virhe:

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

Lähtö:

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

Ero range() ja xrange() välillä Pythonissa

Koska xrange() arvioi vain generaattoriobjektin, joka sisältää vain laiskan arvioinnin vaatimat arvot, nopeammin toteutuksessa kuin range().

Tärkeitä kohtia:

  • Jos haluat kirjoittaa koodia, joka toimii sekä Python 2:ssa että Python 3:ssa, käytä range():tä, koska xrange-funktio on vanhentunut Python 3:ssa.
  • range() on nopeampi, jos iteroidaan samaa sarjaa useita kertoja.
  • xrange():n on rekonstruoitava kokonaislukuolio joka kerta, mutta range() sisältää todellisia kokonaislukuobjekteja. (Se toimii kuitenkin aina huonommin muistin suhteen)

range()

xrange()

Palauttaa luettelon kokonaisluvuista. Palauttaa generaattoriobjektin.
Suoritusnopeus on hitaampi Suoritusnopeus on nopeampi.
Vie enemmän muistia, koska se säilyttää koko luettelon elementeistä muistissa. Vie vähemmän muistia, koska se säilyttää muistissa vain yhden elementin kerrallaan.
Kaikki aritmeettiset toiminnot voidaan suorittaa, kun se palauttaa luettelon. Tällaisia ​​toimintoja ei voi suorittaa xrange() -sovelluksella.
Python 3:ssa xrange() ei ole tuettu. Python 2:ssa xrange()-funktiota käytetään for-silmukoiden iterointiin.