range – вбудована функція Python, котра повертає однойменний об’єкт, який представляє інтервал цілих чисел. Параметри інтервалу (початок, кінець та крок зростання чисел), задається аргументами функції range.

Синтаксис функції:

range(stop)
range(start, stop[, step])

  • start – з якого числа починається діапазон. За замовчуванням дорівнює 0.
  • stop – до якого числа триває діапазон (при цьому зазначене число не включається в нього).
  • step – з яким кроком відбувається зростання чисел. За замовчуванням дорівнює 1.

Об’єкт range зберігає в пам’яті лише інформацію про значення start, stop і step, та обчислює значення за запитом, наприклад під час ітерації по діапазону:

range_object = range(5)

print(range_object)

for i in range_object:
    print(i, end=' ')
    
# range(0, 5)
# 0 1 2 3 4 

Це означає, що незалежно від розміру діапазону, який описує функція range, він завжди займає фіксований обсяг пам’яті.

Приклади роботи range Python

Створимо простий діапазон чисел від 0 до 5:

range_object = range(5)

print(type(range_object))
print(list(range_object))

# <class 'range'>
# [0, 1, 2, 3, 4]

Об’єкт range можна передати функції list(), отримати список та відобразити його елементи. В діапазонах з одним аргументом, кількість елементів котрі він згенерує, буде дорівнювати значенню аргументу – тобто range(5) створить 5 елементів цілих чисел.

range з двома аргументами, початком та кінцем діапазону:

range_object = range(5, 10)

print(list(range_object))

# [5, 6, 7, 8, 9]

range з кроком між елементами діапазону, наприклад для представлення всіх непарних чисел від 1 до 10:

range_object = range(1, 10, 2)

print(list(range_object))

# [1, 3, 5, 7, 9]

За допомогою range також можна генерувати спадаючі послідовності чисел. Для цього потрібно використовувати негативний крок, і вказати start – більшим числом, а stop – меншим:

range_object = range(10, 0, -1)

print(list(range_object))

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

Об’єкт range підтримує операції, котрі підтримують інші послідовності в Python (окрім додавання і множення).

Наприклад перевірка, чи входить число в діапазон, котрий описує range:

range_object = range(0, 10)

print(5 in range_object)

# True

Отримання зрізу діапазону:

range_object = range(0, 10)

print(range_object)
print(range_object[:5])
print(list(range_object[:5]))

# range(0, 10)
# range(0, 5)
# [0, 1, 2, 3, 4]

Детальніше про зрізи можна прочитати в записі: Python – що таке зрізи (slices)

Приклади використання range Python

Використання range, коли потрібно повторити певну операцію фіксовану кількість раз. range(n) – описує діапазон, котрий на запит повертає n елементів, тому цикл for з таким діапазоном, виконає обгорнуті в нього операції n раз:

for _ in range(3):
    print('ok')
    
# ok
# ok
# ok

Ще один приклад використання range, коли потрібно отримати елементи послідовності, в поєднанні з їх індексами:

values = ['Java', 'Python', 'JavaScript']

for i in range(len(values)):
    print(f'{i}: {values[i]}')
    
# 0: Java
# 1: Python
# 2: JavaScript

Хоча для подібних випадків існує альтернативний варіант з функцією enumerate():

values = ['Java', 'Python', 'JavaScript']

for i, value in enumerate(values):
    print(f'{i}: {value}')
    
# 0: Java
# 1: Python
# 2: JavaScript

Детальніше про функцію enumerate() можна прочитати в записі: Python – функція enumerate


Мітки: