Diapazons () un xrange () ir divas funkcijas, kuras var izmantot, lai atkārtotu noteiktu skaitu reižu priekš cilpas Python. In Python3 , nav xrange, bet diapazona funkcija darbojas kā xrange Python2. Ja vēlaties rakstīt kodu, kas darbosies gan Python2, gan Python3, izmantojiet range (). Abi tiek īstenoti dažādos veidos, un tiem ir dažādas ar tiem saistītas īpašības. Salīdzinājuma punkti ir:
- Atgriešanas veids
- Atmiņa
- Darbības lietojums
- Ātrums
Python diapazona() funkcija
The Python diapazona() funkcija atgriež skaitļu virkni noteiktā diapazonā. Visbiežāk tas tiek izmantots skaitļu secību atkārtošanai, izmantojot Python cilpas.
Python xrange() funkcija
Funkcija xrange() programmā Python tiek izmantota, lai ģenerētu skaitļu secību, līdzīgi kā Python range() funkcijai. Python xrange() tiek izmantota tikai Python 2.x, turpretim Python funkcija range() tiek izmantota Python 3.x.
Atgriešanas veids diapazonā () vs xrange ()
Šis xrange () funkcija atgriež ģeneratora objekts ko var izmantot, lai parādītu skaitļus tikai ar cilpu. Vienīgais konkrētais diapazons tiek parādīts pēc pieprasījuma un tādējādi tiek saukts slinks vērtējums , turpretim Python range() funkcija atgriež diapazona objektu (atkārtojama veida).
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))> |
>
gulēt javascript
>
Izvade:
The return type of range() is : The return type of xrange() is :>
Funkcijas xrange() un range() ātrums
Mainīgais, kas glabā diapazons izveidoja diapazons () aizņem vairāk atmiņas salīdzinot ar mainīgo, kas saglabā diapazonu, izmantojot xrange (). Galvenais iemesls tam ir atgriešanās veids diapazons () ir saraksts un xrange () ir xrange () objekts.
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))> |
singleton dizaina modelis java
>
>
Izvade:
The size allotted using range() is : 80064 The size allotted using xrange() is : 40>
Operācijas Funkcijas xrange() un range() izmantošana
Diapazons() atgriež sarakstu, visas darbības, kas var var izmantot sarakstā. No otras puses, kā xrange() atgriež xrange objektu, ar sarakstu saistītās darbības nevar uz tiem attiecas, tāpēc tas ir trūkums.
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>])> |
>
>
Kļūda:
tostring metode java
Traceback (most recent call last): File '1f2d94c59aea6aed795b05a19e44474d.py', line 18, in print (x[2:5]) TypeError: sequence index must be integer, not 'slice'>
Izvade:
The list after slicing using range is : [3, 4, 5] The list after slicing using xrange is :>
Atšķirība starp diapazonu () un xrange () Python
Sakarā ar to, ka xrange() novērtē tikai ģeneratora objektu, kas satur tikai tās vērtības, kas nepieciešamas slinkai novērtēšanai, tāpēc ir ātrāk ieviešanā nekā diapazons ().
Svarīgi punkti:
- Ja vēlaties rakstīt kodu, kas darbosies gan Python 2, gan Python 3, izmantojiet diapazonu (), jo Python 3 funkcija xrange ir novecojusi.
- diapazons () ir ātrāks, ja atkārto vienu un to pašu secību vairākas reizes.
- xrange() katru reizi ir jārekonstruē vesela skaitļa objekts, bet diapazonam() būs reāli veseli skaitļu objekti. (Tomēr atmiņas ziņā tas vienmēr darbosies sliktāk)
| diapazons () | xrange () |
|---|---|
| Atgriež veselu skaitļu sarakstu. | Atgriež ģeneratora objektu. |
| Izpildes ātrums ir lēnāks | Izpildes ātrums ir ātrāks. |
| Aizņem vairāk atmiņas, jo tas saglabā visu elementu sarakstu atmiņā. | Aizņem mazāk atmiņas, jo vienlaikus saglabā atmiņā tikai vienu elementu. |
| Visas aritmētiskās darbības var veikt, jo tas atgriež sarakstu. | Šādas darbības nevar veikt ar xrange (). |
| Python 3 xrange () netiek atbalstīts. | Python 2 xrange() tiek izmantots, lai atkārtotu cilpas. |