Range() і xrange() – це дві функції, які можна використовувати для повторення певної кількості разів для цикли в Python. в Python3 , xrange немає, але функція range поводиться як xrange у Python2. Якщо ви хочете написати код, який працюватиме як на Python2, так і на Python3, вам слід використовувати range(). Обидва реалізуються різними способами та мають різні пов’язані з ними характеристики. Точки порівняння:
- Тип повернення
- Пам'ять
- Використання операції
- швидкість
Функція Python range().
The Функція Python range(). повертає послідовність чисел у заданому діапазоні. Найпоширенішим його використанням є повторення послідовностей на послідовності чисел за допомогою циклів Python.
Функція Python xrange().
Функція xrange() у Python використовується для створення послідовності чисел, подібно до функції Python range(). Python xrange() використовується лише в Python 2.x, тоді як функція range() у Python використовується в Python 3.x.
Тип повернення в діапазоні () проти xrange()
Це xrange() функція повертає об'єкт генератора який можна використовувати для відображення чисел лише за допомогою циклу. Єдиний певний діапазон відображається на вимогу і, отже, викликається лінива оцінка , тоді як у Python функція range() повертає об’єкт діапазону (тип ітерованого).
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))> |
>
що таке myspace
>
Вихід:
The return type of range() is : The return type of xrange() is :>
Швидкість функцій xrange() і range().
Змінна, що зберігає діапазон створено діапазоном() займає більше пам'яті у порівнянні зі змінною, яка зберігає діапазон за допомогою xrange(). Основна причина цього полягає в тому, що тип повернення range() є list, а xrange() є 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))> |
алгоритм для RSA
>
>
Вихід:
The size allotted using range() is : 80064 The size allotted using xrange() is : 40>
Операції Використання функцій xrange() і range().
Range() повертає список усіх операцій, які може бути застосованим до списку можна використовувати в ньому. З іншого боку, оскільки xrange() повертає об’єкт xrange, операції, пов’язані зі списком не можна застосовувати до них, отже, недолік.
Python3
перетворення рядка в int
# 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>])> |
>
>
Помилка:
Traceback (most recent call last): File '1f2d94c59aea6aed795b05a19e44474d.py', line 18, in print (x[2:5]) TypeError: sequence index must be integer, not 'slice'>
Вихід:
The list after slicing using range is : [3, 4, 5] The list after slicing using xrange is :>
Різниця між range() і xrange() у Python
Через те, що xrange() оцінює лише об’єкт генератора, який містить лише значення, необхідні для ледачого обчислення, тому швидше у реалізації, ніж range().
Важливі моменти:
- Якщо ви хочете написати код, який працюватиме як на Python 2, так і на Python 3, використовуйте range(), оскільки функція xrange застаріла в Python 3.
- range() працює швидше, якщо повторювати ту саму послідовність кілька разів.
- xrange() має кожного разу реконструювати цілочисельний об’єкт, але range() матиме справжні цілі об’єкти. (Однак він завжди працюватиме гірше з точки зору пам’яті)
| діапазон() | xrange() |
|---|---|
| Повертає список цілих чисел. | Повертає об'єкт генератора. |
| Швидкість виконання нижча | Швидкість виконання вище. |
| Займає більше пам’яті, оскільки зберігає весь список елементів у пам’яті. | Займає менше пам’яті, оскільки зберігає в пам’яті лише один елемент за раз. |
| Усі арифметичні операції можна виконувати, оскільки він повертає список. | Такі операції не можна виконувати в xrange(). |
| У Python 3 xrange() не підтримується. | У Python 2 xrange() використовується для повторення циклів for. |