Что такое Python Range?
Python range () — это встроенная функция, доступная в Python из Python (3.x), и она дает последовательность чисел на основе заданного индекса начала и конца. Если начальный индекс не указан, он считается равным 0 и будет увеличивать значение на 1 до конечного индекса.
Например, range (5) выведет вам значения 0,1,2,3,4. Python range () — очень полезная команда, и в основном она используется, когда вам приходится повторять цикл for.
В этом уроке вы узнаете:
- Что такое Python Range?
- Синтаксис
- Python range () Функция и история
- Использование range ()
- Использование запуска и остановки в диапазоне ()
- Используя старт, стоп и шаг
- Увеличение значений в диапазоне с использованием положительного шага.
- Обратный диапазон: уменьшение значений с использованием отрицательного шага.
- Использование плавающих чисел в Python range ()
- Использование цикла for с Python range ()
- Использование Python range () в качестве списка
- Использование символов в диапазоне Python ()
- Как получить доступ к элементам диапазона
- Пример: получить четные числа с помощью range ()
- Объединение двухдиапазонных () выходов
- Использование range () с NumPy
Синтаксис
range(start, stop, step)
параметры
- start: (необязательно) начальный индекс представляет собой целое число, и, если он не указан, значением по умолчанию является 0.
- stop: индекс остановки определяет значение, при котором функция диапазона должна остановиться. Это обязательный вход для функции дальности. Последнее значение всегда будет на 1 меньше значения остановки.
- step: (необязательно). Значение шага — это число, на которое следует увеличить следующий номер диапазона, по умолчанию оно равно 1.
Возвращаемое значение:
Возвращаемое значение представляет собой последовательность чисел от заданного индекса начала до конца.
Python range () Функция и история
Python range () был введен в Python версии 3, до этого функция xrange () была функцией.
И range, и xrange () используются для создания последовательности чисел.
Ниже приведены различия между range и xrange ():
спектр() | xrange () |
Range () дает последовательность чисел и возвращает список чисел. | Функция xrange () предоставляет объект-генератор, который необходимо зациклить в цикле for для получения значений. |
Range () возвращает список. | xrange () возвращает объект генератора. |
Метод range () использует больше памяти, поскольку возвращаемый список должен быть сохранен по сравнению с xrange (). | Поскольку xrange () возвращает объект генератора, он не дает значения мгновенно и должен использоваться внутри цикла for для получения значений. |
Использование памяти больше, поэтому выполнение кода происходит медленно при работе с огромным набором данных. | Выполнение кода быстрее с использованием xrange (). |
Использование range ()
В этом примере показано, как распечатать значения от 0 до 9, используя range ().
Значение, используемое в диапазоне, равно 10, поэтому выходной сигнал равен 0 1 2 3 4 5 6 7 8 9
Поскольку старт не задан, старт рассматривается как 0, а последнее значение дается до 9. Последнее значение всегда на 1 меньше заданного значения, т. Е. Стоп-1.
for i in range(10): print(i, end =" ")
Вывод:
0 1 2 3 4 5 6 7 8 9
Использование запуска и остановки в диапазоне ()
В коде начальное значение равно 3, а конечное значение равно 10. Здесь начальный индекс равен 3, поэтому последовательность чисел будет начинаться с 3 до конечного значения. Последнее значение в последовательности будет на 1 меньше значения остановки 10-1 = 9.
for i in range(3, 10): print(i, end =" ")
Вывод:
3 4 5 6 7 8 9
Используя старт, стоп и шаг
Начальное значение равно 3, поэтому последовательность чисел будет начинаться с 3. Стоповое значение равно 10, поэтому последовательность чисел будет останавливаться на (10-1), т. Е. 9. Шаг 2, поэтому каждое значение в последовательности будет увеличивается на 2. Если значение шага не задано, значением шага по умолчанию является 1.
for i in range(3, 10, 2): print(i, end =" ")
Вывод:
3 5 7 9
До сих пор мы видели, как функция range () выдает увеличенное значение для заданного значения остановки. Давайте теперь попробуем пример, чтобы получить уменьшенное значение в данном диапазоне.
Увеличение значений в диапазоне с использованием положительного шага.
Параметр step in range () может использоваться для увеличения / уменьшения значений. По умолчанию это положительное значение 1. Таким образом, оно всегда будет давать увеличенные значения.
Значение шага должно быть положительным в том случае, если вы хотите, чтобы в качестве выходного значения были увеличены значения.
for i in range(1, 30, 5): print(i, end =" ")
Вывод:
1 6 11 16 21 26
Обратный диапазон: уменьшение значений с использованием отрицательного шага.
Шаг параметра с отрицательным значением в range () можно использовать для получения уменьшенных значений. В приведенном ниже примере значение шага является отрицательным, поэтому выходной сигнал будет уменьшен по сравнению с заданным значением диапазона.
for i in range(15, 5, -1): print(i, end =" ")
Вывод:
15 14 13 12 11 10 9 8 7 6
Начальное значение равно 15, конечное значение равно 5, а значение шага является отрицательным числом, т.е. -1. С указанными выше функциями range () будет уменьшать значение с 15 и далее до тех пор, пока оно не достигнет значения останова, но здесь разница в том, что последним значением будет stop + 1.
Использование плавающих чисел в Python range ()
Давайте теперь поработаем над range (), используя числа с плавающей точкой.
Пример:
for i in range(10.5): print(i, end =" ")
В приведенном выше примере мы использовали стоп-значение как 10,5.
Выход:
Traceback (most recent call last): File "python_range.py", line 1, in <module> for i in range(10.5): TypeError: 'float' object cannot be interpreted as an integer
Python выдает ошибку, так как функция range () не поддерживает числа с плавающей запятой для начала, остановки и шага.
Использование цикла for с Python range ()
В этом примере мы будем использовать массив чисел и, давайте посмотрим, как использовать итерацию массива внутри цикла for с помощью range ()
Пример:
arr_list = ['Mysql', 'Mongodb', 'PostgreSQL', 'Firebase'] for i in range(len(arr_list)): print(arr_list[i], end =" ")
Вывод:
MysqlMongodb PostgreSQL Firebase
В приведенном выше примере мы использовали len (arr_list) в качестве значения остановки. Цикл for будет повторяться до конечного значения, то есть длины массива, и это будет 4, поскольку у нас есть четыре элемента в arr_list. Начальное значение будет 0, а шаг будет 1. Так что значения начнутся с 0 и остановятся на 3, то есть длина массива -1 означает 4 -1 = 3.
Использование Python range () в качестве списка
В этом примере вы увидите, как использовать выходные данные диапазона в виде списка.
Пример:
print(list(range(10)))
Вывод:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Вы можете увидеть вывод в виде списка. Не было необходимости зацикливать диапазон () и используя метод list (), мы могли напрямую преобразовывать выходные данные из диапазона в формат списка.
Использование символов в диапазоне Python ()
До сих пор мы использовали целые числа в диапазоне python (). Мы также видели, что числа с плавающей точкой не поддерживаются в диапазоне Python. Давайте попробуем посмотреть, что происходит, когда мы используем символы.
Пример:
for c in range ('z'): print(c, end =" ")
Вывод:
Traceback (most recent call last): File "python_range.py", line 1, in <module> for c in range ('z'): TypeError: 'str' object cannot be interpreted as an integer
Выдает ошибку, говоря, что строку нельзя интерпретировать как целое число.
Чтобы получить список алфавитов, вы можете настроить код и получить желаемый результат, как показано ниже:
Пример:
def get_alphabets(startletter, stopletter, step): for c in range(ord(startletter.lower()), ord(stopletter.lower()), step): yield chr(c) print(list(get_alphabets("a", "h", 1)))
Вывод:
['a', 'b', 'c', 'd', 'e', 'f', 'g']
Как получить доступ к элементам диапазона
Вы можете использовать цикл for для получения значений из диапазона или использовать индекс для доступа к элементам из range ().
Использование цикла for
Пример:
for i in range(6): print(i)
Вывод:
0 1 2 3 4 5
Используя индекс
Индекс используется с диапазоном, чтобы получить значение, доступное в этой позиции. Если значение диапазона равно 5, чтобы получить начальное значение, вы можете использовать диапазон (5) [0] и следующий диапазон значений (5) [1] и так далее.
Пример:
startvalue = range(5)[0] print("The first element in range is = ", startvalue) secondvalue = range(5)[1] print("The second element in range is = ", secondvalue) lastvalue = range(5)[-1] print("The first element in range is = ", lastvalue)
Вывод:
startvalue = range(5)[0] print("The first element in range is = ", startvalue) secondvalue = range(5)[1] print("The second element in range is = ", secondvalue) lastvalue = range(5)[-1] print("The first element in range is = ", lastvalue)
Использование списка ()
Этот метод напечатает все элементы из диапазона (). Используя list (), он вернет элементы из range () в формате списка.
Пример:
print(list(range(10)))
Вывод:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Это дает вывод списка для данного диапазона.
Пример: получить четные числа с помощью range ()
Используя range (), вы получите список четных чисел в диапазоне, заданном в качестве входных данных. Параметры для range (): start — 2, stop — 20, step — 2, поэтому значения будут увеличены на 2 и будут давать четные числа до stop-2.
Пример:
for i in range(2, 20, 2): print(i, end =" ")
Вывод:
2 4 6 8 10 12 14 16 18
Объединение двухдиапазонных () выходов
В этом примере будут объединены 2 функции range () с помощью функции itertools module chain ().
Пример:
from itertools import chain print("Merging two range into one") frange =chain(range(10), range(10, 20, 1)) for i in frange: print(i, end=" ")
Вывод:
Merging two range into one 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
Использование range () с NumPy
Модуль NumPy имеет функцию arange (), которая работает и выдает аналогичные выходные данные, как range (). Range () принимает те же параметры, что и range ().
Синтаксис:
arange(start, stop, step)
Для работы с NumPy выполните следующие действия.
Шаг 1 : Импортировать модуль NumPy
import numpy
Incase во время выполнения выдает ошибку о том, что numpy модуль не найден, вам необходимо установить модуль, как показано в шаге 2.
Шаг 2 : Установите NumPy
pip install numpy
Шаг 3 : Рабочий пример arange () с использованием NumPy
import numpy as np for i in np.arange(10): print(i, end =" ")
Вывод:
0 1 2 3 4 5 6 7 8 9
Числа с плавающей точкой, используя NumPy arange ()
Невозможно получить последовательность с плавающей запятой, используя range (), но это возможно, используя NumPy arange ().
Пример:
Диапазон, который мы хотим, составляет от 0,5 до 1,5. Значение будет увеличено на 0,2.
import numpy as np for i in np.arange(0.5, 1.5, 0.2): print(i, end =" ")
Вывод:
0.5 0.7 0.8999999999999999 1.0999999999999999 1.2999999999999998
Вывод, который мы получаем, немного странный, некоторые числа с плавающей запятой показаны с 16 десятичными разрядами. Это происходит из-за сложности хранения десятичных чисел с плавающей запятой в двоичном формате. Вы также можете округлить значения, если необходимо, и ограничить их десятичными разрядами, которые вам нужны.
Резюме:
- Python range () — это встроенная функция, доступная в Python из Python (3.x), и она дает последовательность чисел на основе заданного индекса начала и конца. Если начальный индекс не указан, он считается равным 0 и будет увеличивать значение до конечного индекса.
- Python range () был введен в Python версии 3, до этого функция xrange () была функцией.
- Range () дает последовательность чисел и возвращает список чисел. Функция xrange () предоставляет объект-генератор, который необходимо зациклить в цикле for для получения значений.
- Параметр step in range () может использоваться для увеличения / уменьшения значений. По умолчанию это положительное значение 1. Таким образом, оно всегда будет давать увеличенные значения.
- Python выдает ошибку для чисел с плавающей точкой, так как функция range () поддерживает только целочисленные значения.
- Доступ к значениям из range () можно получить с помощью цикла for, используя index и list ().
- Модуль NumPy имеет функцию arange (), которая работает и выдает аналогичные выходные данные, как range (). Arange () принимает те же параметры, что и range ().
- Можно получить последовательность с плавающей точкой NumPy arange (), которая не поддерживается с помощью range ().