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