Python Функция range(): Float, List, Примеры циклов For
Что такое Python Диапазон?
Python range() — это встроенная функция, доступная с помощью Python от Python(3.x), и он дает последовательность чисел на основе заданных начального и конечного индексов. В случае, если начальный индекс не задан, индекс считается равным 0, и он будет увеличивать значение на 1 до конечного индекса.
Например, range(5) выведет значения 0,1,2,3,4. Python range() — очень полезная команда, которая чаще всего используется, когда вам нужно выполнить итерацию с использованием цикла for.
Синтаксис
range(start, stop, step)
параметры
- Начало: (необязательно) Начальный индекс представляет собой целое число. Если он не указан, значение по умолчанию равно 0.
- стоп: Индекс остановки определяет значение, при котором функция диапазона должна остановиться. Это обязательный вход для функции диапазона. Последнее значение всегда будет на 1 меньше стопового значения.
- шаг: (необязательно). Значение шага — это число, на которое необходимо увеличить следующее число в диапазоне. По умолчанию оно равно 1.
Возвращаемое значение
Возвращаемое значение представляет собой последовательность чисел от заданного начального до конечного индекса.
Python range() Функция и история
Python range() был введен в Python версии 3, до этого функцией был xrange().
И range, и xrange() используются для создания последовательности чисел.
Ниже приведена разница между диапазоном и 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() выдает увеличенное значение для заданного стопового значения. Давайте теперь попробуем пример, чтобы получить уменьшенное значение в заданном диапазоне.
Увеличение значений в диапазоне с использованием положительного шага.
Шаг параметра в range() можно использовать для увеличения/уменьшения значений. По умолчанию это положительное значение 1. Поэтому оно всегда будет давать увеличенные значения.
Значение шага должно быть положительным, если вы хотите, чтобы на выходе были увеличенные значения.
for i in range(1, 30, 5): print(i, end =" ")
Вывод:
1 6 11 16 21 26
Reverse Диапазон: уменьшение значений с использованием отрицательного шага.
Шаг параметра с отрицательным значением в 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 и далее, пока оно не достигнет стопового значения, но здесь разница в том, что последнее значение будет стоп + 1.
Использование плавающих чисел в Python диапазон()
Давайте теперь поработаем над 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 диапазон()
В этом примере мы будем использовать массив чисел, и давайте посмотрим, как использовать итерацию массива внутри цикла 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 диапазон() в виде списка
В этом примере мы увидим, как использовать выходные данные диапазона в виде списка.
Пример:
print(list(range(10)))
Вывод:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Вы можете видеть, что результат представляет собой список. Не было необходимости зацикливать range(), и с помощью метода list() мы могли напрямую преобразовать выходные данные из диапазона в формат списка.
Использование символов в диапазоне Python()
До сих пор мы использовали целые числа в функции range() 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 для получения значений из диапазона или использовать индекс для доступа к элементам из диапазона().
Использование цикла 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)
Вывод:
The first element in range is = 0 The second element in range is = 1 The first element in range is = 4
Использование списка()
Этот метод распечатает все элементы из диапазона(). Используя 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() с помощью функции Chain() модуля itertools.
Пример:
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(). Arrange() принимает те же параметры, что и range().
Синтаксис:
arange(start, stop, step)
Для работы с NumPy выполните шаги, указанные ниже.
Шаг 1: Импортировать модуль NumPy.
import numpy
В случае, если во время выполнения выдается ошибка о том, что модуль 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 для получения значений.
- Шаг параметра в range() можно использовать для увеличения/уменьшения значений. По умолчанию это положительное значение 1. Поэтому оно всегда будет давать увеличенные значения.
- Python выдает ошибку для чисел с плавающей точкой, так как функция range() поддерживает только целые значения.
- Доступ к значениям из range() можно получить с помощью цикла for, используя index и list().
- Модуль NumPy имеет функцию arange(), которая работает и выдает такой же результат, как и range(). Функция arange() принимает те же параметры, что и range().
- С помощью range() можно получить последовательность чисел с плавающей запятой NumPy arange(), которая не поддерживается.