Перейти к содержимому

Xrange python 3 что это

  • автор:

Функция 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().

4.3. Функции range() и xrange()

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

>>> range(10)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

Указанная верхняя граница никогда не входит в созданную последовательность. range(10) создает список из 10 значений, точно соответствующих допустимым индексам для элементов последовательности, имеющей длину 10. Можно указать другую нижнюю границу или другое приращение (шаг), в том числе и отрицательное:

>>> range(5, 10)
[5, 6, 7, 8, 9]
>>> range(0, 10, 3)
[0, 3, 6, 9]
>>> range(-10, -100, -30)
[-10, -40, -70]

Для того, чтобы перебрать индексы последовательности, используйте совместно range() и len() :

>>> a = [‘У’, ‘Матери’, ‘есть’, ‘маленькая’, ‘овечка’]
>>> for i in range(len(a)):
. print i, a[i]
.
0 У
1 Матери
2 есть
3 маленькая
4 овечка

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

>>> l=range(1000000000)
Traceback (most recent call last):
File «», line 1, in
MemoryError

Действительно, если мы не собираемся изменять список, достаточно создать псевдосписок — объект, для которого мы можем получить значения «элементов», но не можем изменить их или порядок их следования. Для этих целей в языке Python предусмотрена функция xrange() :

>>> xrange(5, 10)
xrange(5, 10)
>>> xrange(0, 10, 3)
xrange(0, 12, 3)
>>> xrange(-10, -100, -30)
xrange(-10, -100, -30)
>>> a = [‘У’, ‘Матери’, ‘есть’, ‘маленькая’, ‘овечка’]
>>> for i in xrange(len(a)):
. print i, a[i]
.
0 У
1 Матери
2 есть
3 маленькая
4 овечка

  • (в том числе и инструкция for) требует возможности получить произвольный элемент по индексу.

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

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

Luxury Car Rental in Miami | Reserve a Premium Vehicle with RealCar