logo

range() vs xrange() v Pythone

Range() a xrange() sú dve funkcie, ktoré možno použiť na opakovanie určitého počtu opakovaní pre slučky v Pythone. In Python3 , neexistuje xrange, ale funkcia range sa v Pythone2 správa ako xrange. Ak chcete napísať kód, ktorý bude bežať na Pythone2 aj Pythone3, mali by ste použiť range(). Obe sú implementované rôznymi spôsobmi a majú s nimi spojené rôzne vlastnosti. Body na porovnanie sú:

  • Typ návratu
  • Pamäť
  • Prevádzkové využitie
  • Rýchlosť

Funkcia Python range().

The Funkcia Python range(). vráti postupnosť čísel v danom rozsahu. Najbežnejšie sa používa na iteráciu sekvencií na sekvencii čísel pomocou cyklov Pythonu.



Funkcia xrange() v Pythone

Funkcia xrange() v Pythone sa používa na generovanie postupnosti čísel, podobne ako funkcia Python range(). Python xrange() sa používa iba v Pythone 2.x, zatiaľ čo funkcia range() v Pythone sa používa v Pythone 3.x.

Návratový typ v rozsahu () vs xrange ()

Toto xrange() funkcia vráti objekt generátora ktoré je možné použiť na zobrazenie čísel iba v slučke. Jediný konkrétny rozsah sa zobrazí na požiadanie, a preto sa volá lenivé hodnotenie , zatiaľ čo v Pythone funkcia range() vracia objekt rozsahu (typ iterovateľného).

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

>

c++ rozdelený reťazec
>

Výkon:

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

Rýchlosť funkcií xrange() a range().

Premenná ukladajúca rozsah vytvorené pomocou range() zaberá viac pamäte v porovnaní s premennou ukladajúcou rozsah pomocou xrange(). Hlavným dôvodom je návratový typ range() je zoznam a xrange() je objekt xrange().

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

regexp_like v mysql
>

>

Výkon:

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

Operácie Použitie funkcií xrange() a range().

Range() vráti zoznam, všetky operácie, ktoré môcť možno použiť na zozname. Na druhej strane, keďže xrange() vracia objekt xrange, operácie spojené so zoznamom nemôže aplikované na ne, čo je nevýhoda.

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

>

>

Chyba:

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

Výkon:

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

Rozdiel medzi range() a xrange() v Pythone

Vzhľadom k tomu, že xrange() vyhodnocuje iba objekt generátora, ktorý obsahuje iba hodnoty, ktoré vyžaduje lenivé vyhodnotenie, je rýchlejšie v implementácii ako range().

Dôležité body:

previesť int na reťazec java
  • Ak chcete napísať kód, ktorý bude bežať na Pythone 2 aj Pythone 3, použite range(), pretože funkcia xrange je v Pythone 3 zastaraná.
  • range() je rýchlejšia, ak opakovane opakujete rovnakú sekvenciu.
  • xrange() musí zakaždým rekonštruovať celočíselný objekt, ale range() bude mať skutočné celočíselné objekty. (Vždy však bude fungovať horšie, pokiaľ ide o pamäť)

rozsah()

xrange()

Vráti zoznam celých čísel. Vráti objekt generátora.
Rýchlosť vykonávania je nižšia Rýchlosť vykonávania je vyššia.
Zaberá viac pamäte, pretože uchováva celý zoznam prvkov v pamäti. Zaberá menej pamäte, pretože v pamäti uchováva vždy iba jeden prvok.
Všetky aritmetické operácie možno vykonávať, pretože vracia zoznam. Takéto operácie nemožno vykonať na xrange().
V pythone 3 nie je xrange() podporované. V pythone 2 sa xrange() používa na iteráciu v cykloch for.