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