Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> Python

Освоение функции range() в Python: от основ к продвинутым сценариям

Что такое range() в Python?

Встроенный генератор range() в Python создаёт последовательность целых чисел на основе начала, конца и опционального шага. Если начальное значение опущено, оно по умолчанию равно 0, а последовательность увеличивается на 1 до достижения конечного значения (исключительно). Например, range(5) даёт 0, 1, 2, 3, 4. Функция незаменима при итерации с циклами for.

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

Синтаксис

range(start, stop, step)

Параметры

Возвращаемое значение

Возвращает объект range, ведющий себя как неизменяемая последовательность целых чисел. При преобразовании в список отображается полная последовательность.

История функции range()

Введённая в Python 3, range() заменила старую xrange() из Python 2. Ключевые отличия:

range()xrange()
Возвращает неизменяемую последовательность чисел.Возвращает объект генератора.
Потребляет память пропорционально длине последовательности.Использует минимальную память; генерирует значения лениво.
Подходит для небольших и средних диапазонов.Предпочтительна для больших диапазонов или бесконечных последовательностей.
Медленнее на очень больших диапазонах из-за выделения памяти.Быстрее при итерации по большим диапазонам.

Использование range()

Базовый пример, печатающий числа от 0 до 9:

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

Вывод:

0 1 2 3 4 5 6 7 8 9

Использование start и stop в range()

Указание начального значения сдвигает последовательность:

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

Вывод:

3 4 5 6 7 8 9

Использование start, stop и step

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

for i in range(3, 10, 2):
    print(i, end=" ")

Вывод:

3 5 7 9

Инкремент значений с положительным шагом

Стандартный шаг равен 1, но можно указать любое положительное целое:

for i in range(1, 30, 5):
    print(i, end=" ")

Вывод:

1 6 11 16 21 26

Обратный диапазон: декремент с отрицательным шагом

Отрицательный шаг создаёт убывающую последовательность:

for i in range(15, 5, -1):
    print(i, end=" ")

Вывод:

15 14 13 12 11 10 9 8 7 6

Использование чисел с плавающей точкой в range()

Встроенный range() принимает только целые числа. Попытка передать float вызывает TypeError:

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

Вывод:

Traceback (most recent call last):
  File "python_range.py", line 1, in 
    for i in range(10.5):
TypeError: 'float' object cannot be interpreted as an integer

Использование for-цикла с range()

Range часто сочетают с len() для итерации по индексам списка:

arr_list = ['Mysql', 'Mongodb', 'PostgreSQL', 'Firebase']
for i in range(len(arr_list)):
    print(arr_list[i], end=" ")

Вывод:

Mysql Mongodb PostgreSQL Firebase

Использование range() как списка

Преобразование range в список простое:

print(list(range(10)))

Вывод:

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

Использование символов в range()

Хотя range() работает только с целыми, можно генерировать алфавитные последовательности, конвертируя символы в их коды Unicode:

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']

Доступ к элементам range

Значения можно получать через итерацию, индексацию или преобразование в список:

Итерация

for i in range(6):
    print(i)

Вывод:

0 1 2 3 4 5

Индексация

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 last element in range is = ", lastvalue)

Вывод:

The first element in range is = 0
The second element in range is = 1
The last element in range is = 4

Использование list()

print(list(range(10)))

Вывод:

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

Пример: получение чётных чисел с range()

Для генерации чётных чисел до 18:

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

Вывод:

2 4 6 8 10 12 14 16 18

Объединение двух range()

Комбинирование двух объектов range можно сделать с itertools.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(), но поддерживает шаги с плавающей точкой:

Синтаксис

arange(start, stop, step)

Пример

import numpy as np
for i in np.arange(10):
    print(i, end=" ")

Вывод:

0 1 2 3 4 5 6 7 8 9

Диапазон с плавающей точкой в NumPy

for i in np.arange(0.5, 1.5, 0.2):
    print(i, end=" ")

Вывод:

0.5 0.7 0.8999999999999999 1.0999999999999999 1.2999999999999998

Из-за двоичной арифметики с плавающей точкой вывод иногда показывает длинные десятичные развертывания. При необходимости значения можно округлить.

Резюме

Python

  1. Аргументы функций в Python: позиционные, именованные и параметры по умолчанию
  2. Lambda-функции в Python: практическое руководство по анонимным функциям
  3. Генераторы в Python: эффективная итерация и продвинутые сценарии
  4. Освоение лямбда-функций Python: практические примеры и лучшие практики
  5. Функция abs() в Python: вычисление абсолютных значений для чисел и комплексных чисел
  6. Функция round() в Python: подробное объяснение с практическими примерами
  7. Освоение функции range() в Python: от основ к продвинутым сценариям
  8. Освоение функции map() в Python: синтаксис, примеры и лучшие практики
  9. Освоение enumerate() в Python: циклы с индексами для списков, кортежей, строк и словарей
  10. Python list.count(): экспертное руководство с практическими примерами