Что такое xrange python
Перейти к содержимому

Что такое xrange python

  • автор:

Функция xrange() в Python

Функция xrange() в Python используется для генерации последовательности целых чисел. Эта функция является частью Python 2. В Python 3 имя было изменено на функцию range().

Синтаксис xrange()

xrange(start, end, step)
  • Переменная start определяет начальный номер, он входит в выходную последовательность целых чисел. Это необязательно, значение по умолчанию – 0.
  • Конечная переменная определяет конечное число, оно исключается из выходной последовательности целых чисел. Обязательный параметр.
  • Шаг определяет разницу между каждым числом в последовательности. Это необязательно со значением по умолчанию 1.
  • Когда передается только один аргумент, он рассматривается как конечная переменная.

Примеры функции

Давайте посмотрим на несколько примеров использования функции xrange() с помощью Python Interpreter.

1. Только с конечной переменной

>>> x = xrange(5) >>> print(type(x)) >>> >>> for n in x: . print(n) . 0 1 2 3 4 >>>

2. Сначальным и конечным значениями

>>> x = xrange(3, 6) >>> for n in x: . print(n) . 3 4 5 >>>

3. С переменными start, end и step

>>> x = xrange(3, 10, 2) >>> for n in x: . print(n) . 3 5 7 9 >>>

Сравнение функций range() и xrange()

Если вы используете версию Python 2.x, используйте функцию xrange() для генерации последовательности чисел. Если вы используете Python 3, используйте функцию range(), поскольку xrange() был переименован в функцию range().

Python: разница между range и xrange

В программировании на Python у нас есть две функции range() и xrange(), которые генерируют целые числа из заданного начального и конечного значений. Здесь мы обсуждаем основные различия между функциями xrange и range.

Что такое range и xrange?

В Python 2.x у нас было два основных метода для генерации списка целых чисел в заданном диапазоне.

Однако в Python 3 xrange() переименован в range().

Следовательно, в Python 3 мы получаем единственную функцию, которая может производить числа из заданного диапазона.

Функция range() в python 3.x — это просто повторная реализация xrange() в python 2.x и она на самом деле работает так же, как xrange.

Если вы используете Python 2.x, тогда разница между xrange() и range () значима для вас.

В чем же была разница в Python 2.x

Две функции диапазона имеют много разных черт. Они могут относиться к производительности, потреблению памяти, скорости и внутреннему дизайну. Каждый из них имеет свою реализацию. Теперь давайте рассмотрим каждое из этих отличий по одному.

Операционная разница

В большинстве случаев и xrange, и range работают одинаково. Они оба дают возможность составить список чисел.

Следовательно, мы можем сказать, что оба схожи с точки зрения функциональности. Давайте сейчас посмотрим несколько примеров:

Выражение range(1, 7, 2) даст результат [1, 3, 5], а xrange(1, 7, 2) — [1, 3, 5]. Следовательно, вы можете сделать вывод, что они имеют сходную схему исполнения и выходные данные.

Возвращаемые значения и тип

Это основной источник различий между функциями xrange и range.

Range() возвращает объект типа list. Например, выражение range(1, 100, 1) создаст диапазон чисел от 0 до 99 и вернет все цифры за один раз.

>>> r = range(1, 100, 1) >>> type(r) >>> len(r) 99

С другой стороны, xrange() предоставляет результаты в виде объекта xrange. Он выполняет ленивую оценку. Он сохраняет аргументы и возвращает числа по запросу. В отличие от range(), он позволяет избежать получения всех чисел за один раз.

Объект xrange допускает итерацию, индексацию и метод len(). Вы можете использовать его в цикле for, чтобы обойти и получать числа в каждой итерации.

>>> xr = xrange(1, 100, 1) >>> type(xr) >>> xr[0] 1 >>> for it in xr: . print(it) . 1 2 3 . 99

Python xrange vs. range — кто быстрее?

У нас есть модуль timeit в Python для захвата времени выполнения любой функции. Мы будем использовать его в нашем тесте и посмотрим, какой из них быстрее.

Мы выполнили range() в нашем тесте три раза, в пример ниже приведен результат и время, которое потребовалось для выполнения:

>>> import timeit >>> timeit.timeit('"-".join(str(num) for num in range(10000))', number=10000) 22.56510010000011 >>> timeit.timeit('"-".join(str(num) for num in range(10000))', number=10000) 22.796818399999893 >>> timeit.timeit('"-".join(str(num) for num in range(10000))', number=10000) 24.003325399999994

Мы снова провели один и тот же тест с xrange() три раза и записали время их выполнения.

>>> timeit.timeit('"-".join(str(num) for num in xrange(10000))', number=10000) 20.672853799999984 >>> timeit.timeit('"-".join(str(num) for num in xrange(10000))', number=10000) 20.471903500000053 >>> timeit.timeit('"-".join(str(num) for num in xrange(10000))', number=10000) 20.15995029999999

Из приведенных выше тестов и результатов вы можете оценить, что xrange быстрее, чем стандартная функция диапазона.

  • При использовании xrange вы могли заметить, что он не создает статический список, как функция range(). Вместо этого он больше похож на генератор, который выдает значения по запросу.
  • Функция range() получает все числа сразу перед выполнением любой инструкции в цикле.

Вот некоторые факты для вашей справки:

  • Основная проблема со стандартной функцией range() заключается в том, что она потребляет значительный объем памяти, особенно для большего диапазона чисел.
  • Функция xrange() всегда предоставляет следующий элемент по запросу. Это означает, что в памяти одновременно существует только один элемент. Следовательно, он потребляет меньше памяти.

Что предпочесть range или xrange?

Это компромисс между мгновенным результатом и сегментированным выходом. С помощью xrange мы получаем более быстрый ответ; Кроме того, он потребляет меньше памяти.

Следовательно, очевидно, что Python xrange имеет преимущество над традиционной функцией range(). Давайте теперь посмотрим на некоторые случаи, чтобы понять, какой из этих методов подходит и где.

Где предпочтительно использовать xrange()?
  • Когда диапазон имеет более широкий охват, мы рекомендуем использовать xrange(). Это улучшит скорость и потребует меньше памяти.
  • Если вы планируете работать на маломощных устройствах (которые имеют ограничения памяти), тогда с xrange() вы можете не увидеть проблем с буфером.
Где предпочтительно использовать range()?
  • Когда вам приходится часто просматривать список, лучше использовать range(). С xrange() было бы непросто создать экземпляр целочисленного объекта для каждого запроса на индексирование.
  • Если вы используете небольшой диапазон, то использование функции range() — правильная идея.
  • Так как метод range возвращает объект списка, вы можете использовать все его функции. Напротив, xrange предоставляет голый целочисленный объект, который требует индексации.
  • Интересно, что если вы хотите, чтобы ваш код Python 2.x был совместим с версией 3.x, вам также следует использовать метод range.

Совместимость Между Python И Xrange

В Python 3.x функция xrange не существует, тогда как она предоставляет функцию range(). Реальность такова, что название «xrange» изменилось на «range» в Python 3.x.

Таким образом, если вы выполните вызов xrange() в Python 3.x, это вызовет приведенную ниже ошибку.

NameError: name ‘xrange’ is not defined

Кроме того, если вы решите импортировать xrange, даже тогда произойдет следующая ошибка.

ImportError: No module named ‘xrange’

Следовательно, вы можете решить использовать range() вместо xrange() для обеспечения совместимости между различными версиями.

Функции Range() и Xrange() в Python – в чем разница?

В этой статье мы обсудим, что такое функции range() и xrange() в Python, как они используются в Python и каковы основные особенности каждой из них и отличия.

Функции, доступные в Python, можно использовать в нескольких частях нашей программы, поскольку они уменьшают размер кода и повышают удобочитаемость кода.

Во-первых, мы рассмотрим, что такое функция range, и обсудим программы, в которых она используется. Затем мы узнаем, что такое функция xrange, и разберемся в ней с помощью некоторых программ. Наконец, мы рассмотрим особенности каждой из них.

Функция range()

Мы напечатаем первые 7 чисел, начиная с 0 до 6. Укажем значение в функции диапазона для этого же и поставим пробел в конце параметра, чтобы значения печатались с ним.

Следующая программа это проиллюстрирует.

for i in range(7): print(i, end=" ")

Пример 1

Во втором примере мы снова сделаем то же самое, то есть напечатаем первые 7 чисел, начиная с 0 до 6. Мы указали значение в функции диапазона для этого же и предоставили пробел в конечном параметре, чтобы он печатает значения с пробелом.

После этого мы также проверим, какой тип он возвращает.

Следующая программа иллюстрирует то же самое:

for i in range(7): print(i,end=" ") print(type(range(7)))

Пример 2

В следующем примере мы определили список, содержащий 10 элементов. Мы указали значение как длину нашего списка ‘a’ в функции диапазона и предоставили пробел в конечном параметре.

a=[1,2,3,4,5,6,7,8,9,10] for i in range(len(a)): print(a[i],end=" ")

Пример 3

В следующем примере мы напечатаем значения в обратном порядке, лежащем в диапазоне от 0 до 10, и укажем значение в функции диапазона в формате начала, остановки и конца. Давайте посмотрим на каждое из обозначений:

  • start – значение, с которого мы хотели бы начать отображение элементов;
  • stop – значение, на котором мы хотели бы прекратить отображение элементов;
  • step – значение шага относится к значению, которое указывает тип последовательности, которую мы ожидаем в наших результатах. По умолчанию значение шага равно 0.
for i in range(10,-1,-1): print(i)

Пример 4

В следующем примере мы напечатаем числа от 21 до 31, но на этот раз используя обратный метод Python. Укажем значение в функции диапазона и предоставим пробел в конечном параметре, чтобы он печатал значения с пробелом.

for i in reversed(range(21,31)): print(i,end=" ")

Пример 5

Функция Xrange()

Функция xrange() имеет ту же цель и возвращает объект-генератор, но использовалась в версиях, предшествующих Python 3.

Синтаксис xrange такой же, как и range(), что означает, что в xrange мы также должны указать начало, остановку и шаг.

Если вы используете Python 3 и выполняете программу с использованием xrange, она выдаст ошибку, поскольку в этой версии и позже используется range().

Давайте посмотрим, что произойдет, когда мы запустим следующую программу на Python.

for i in range(1,10,2): print(i) for j in xrange(10,20,2): print(j)

Функция xrange()

Сравнение Range() и Xrange()

Здесь мы сравним обе функции на основе потребления памяти, типа возвращаемого значения, скорости и операций.

Параметры Range() Xrange()
1. Потребление памяти Поскольку range() возвращает список элементов, требуется больше памяти. По сравнению с range() требует меньше памяти.
2. Тип возврата Она возвращает список целых чисел. Возвращает объект-генератор.
3. Скорость Скорость выполнения ниже. Скорость выполнения выше.
4. Операции Поскольку она возвращает список, можно выполнять все виды арифметических операций. Такие операции нельзя выполнять с xrange().

What is the Difference between range() and xrange() in Python?

Python Course for Beginners With Certification: Mastering the Essentials

The range() and xrange() functions are built-in functions in Python programming that are used to iterate over a sequence of values. Both the range() and xrange() functions are used with the for() loops to iterate over certain number of times. Both the range() and xrange() functions create a list of the specified range of values. So, if we provide (1, 10) as the parameter to both the functions then it will create a list in the memory having 9 elements (1 to 10 excluding the 10th number).

The range() and xrange() functions are used in Python3 and Python2 respectively. As we know Python3 does not support backward compatibility, so the xrange() function (which was used in Python2) cannot be used in Python3 but the range() function can be used with Python2. Now, if we want our code to work on both the Python2 and Python3 interpreters then we should use the range() function.

Now, the difference between range and xrange in Python lies in their working speed and return values. The range() function is comparatively faster than the xrange() function. The range() function supports list slicing on the other hand, the xrange() function does not support list slicing. The range() function return a range a of iterable type objects on the other hand the xrange() function return the generator object.

Note:

  • The range() function of Python-3 is basically a re-implementation of the xrange() function of Python2.
  • List slicing is a way to get the subsets of any list or an array.
  • Generator object is basically an iterator object having a sequence of values.

Let us now discuss both the range() and xrange() functions along with their example before getting into the detailed difference between range and xrange in Python.

range() Function

The range() function is a Python built-in function that is used to iterate over a sequence of values. Whenever the range() function is invoked, a sequence of numbers is created by the function and returned. The range() function helps us to iterate over a specific block of code certain number of times. The returned sequence of numbers starts with 0. By default the, numbers increments by 1 and the sequence ends before the specified number.

Note: range() is a data type in Python programming language. We can verify the same by using type() method.

The output of the print will be: .

Syntax of range() Function

The syntax of range() function is very simple.

Parameters of the range() Function

The range() function takes three parameters in which two of them are optional and one is required. Let us briefly discuss the parameters of the range() function:

  • start : It is an optional parameter. The start denotes the integer from where the iteration should start.
  • end : It is a required parameter. The end denotes the integer where the iteration should stop. We should remember that the end integer is not included.
  • steps : It is an optional parameter that denotes the number of increment(s) to be made in each iteration. By default the, steps value is set to 1.

The range() function in Python returns a sequence consisting of numbers that are immutables. These sequences of numbers can be easily converted into any sequential data types like tuples, lists, sets, etc.

Speed of range() function

The range() is more optimized than its ancestor xrange() function. The xrange() function needs to reconstruct the integer objects again and again, on the other hand, the range() function does not need to reconstruct the integer object hence it is faster than the xrange() function.

Note: The range() function only works with integers i.e. int data type. So, all the parameters of the range() function only accept integers but all the three parameters of the range() function can be negative as well.

Let us take a few examples to understand the usage of the range() function.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *