logo

range() proti xrange() v Pythonu

Range() in xrange() sta dve funkciji, ki ju je mogoče uporabiti za določeno število ponovitev za zank v Pythonu. noter Python3 , ni xrange, vendar se funkcija range obnaša kot xrange v Python2. Če želite napisati kodo, ki se bo izvajala na Python2 in Python3, morate uporabiti range(). Oba se izvajata na različne načine in imata različne značilnosti, povezane z njima. Točke primerjave so:

  • Vrsta povratka
  • Spomin
  • Uporaba delovanja
  • Hitrost

Funkcija Python range().

The Funkcija Python range(). vrne zaporedje števil v danem obsegu. Najpogostejša uporaba je ponavljanje zaporedij na zaporedju števil z uporabo zank Python.



Python funkcija xrange().

Funkcija xrange() v Pythonu se uporablja za ustvarjanje zaporedja števil, podobno kot funkcija Python range(). Python xrange() se uporablja samo v Pythonu 2.x, medtem ko se funkcija range() v Pythonu uporablja v Pythonu 3.x.

Povratni tip v range() proti xrange()

to xrange() funkcija vrne objekt generatorja ki se lahko uporablja za prikaz številk samo z zanko. Edino določeno območje je prikazano na zahtevo in zato priklicano leno ocenjevanje , medtem ko v Pythonu funkcija range() vrne objekt obsega (vrsta 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 z razdelitvijo nizov
>

Izhod:

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

Hitrost funkcij xrange() in range().

Spremenljivka, ki shranjuje obseg ustvaril range() zavzame več pomnilnika v primerjavi s spremenljivko, ki shranjuje obseg z uporabo xrange(). Osnovni razlog za to je vrnitev vrste range() list in xrange() je xrange() object.

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

javascript za zanko
>

>

Izhod:

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

Operacije Uporaba funkcij xrange() in range().

Range() vrne seznam vseh operacij, ki lahko uporabiti na seznamu je mogoče uporabiti na njem. Po drugi strani pa xrange() vrne objekt xrange, operacije, povezane s seznamom ne more uporabiti zanje, kar je slabost.

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

>

>

Napaka:

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

Izhod:

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

Razlika med range() in xrange() v Pythonu

Ker xrange() ovrednoti samo objekt generatorja, ki vsebuje samo vrednosti, ki jih zahteva leno vrednotenje, je torej hitreje v izvedbi kot range().

Pomembne točke:

  • Če želite napisati kodo, ki se bo izvajala tako v Pythonu 2 kot v Pythonu 3, uporabite range(), saj je funkcija xrange v Pythonu 3 opuščena.
  • range() je hitrejši, če večkrat ponovite isto zaporedje.
  • xrange() mora vsakič rekonstruirati celoštevilski objekt, vendar bo range() imel prave cele objekte. (Vendar bo vedno slabše deloval v smislu pomnilnika)

obseg()

xrange()

Vrne seznam celih števil. Vrne objekt generatorja.
Hitrost izvajanja je počasnejša Hitrost izvajanja je hitrejša.
Zavzame več pomnilnika, saj hrani celoten seznam elementov v pomnilniku. Zavzame manj pomnilnika, saj v pomnilniku hrani samo en element naenkrat.
Vse aritmetične operacije je mogoče izvesti, saj vrne seznam. Takih operacij ni mogoče izvesti na xrange().
V pythonu 3 xrange() ni podprt. V pythonu 2 se xrange() uporablja za ponavljanje v zankah for.