Учебники

44) Диапазон Python ()

Что такое Python Range?

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

Например, range (5) выведет вам значения 0,1,2,3,4. Python range () — очень полезная команда, и в основном она используется, когда вам приходится повторять цикл for.

В этом уроке вы узнаете:

Синтаксис

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 ().