Перейти до змісту

Функція range

Функція range повертає незмінну послідовність чисел як об'єкт range.

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

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

Параметри функції:

  • start - з якого числа починається послідовність. За замовчуванням - 0
  • stop - до якого числа продовжується послідовність чисел. Зазначене число не входить до діапазону
  • step - з яким кроком ростуть числа. За замовчуванням 1

Функція range зберігає лише інформацію про значення start, stop і step і обчислює значення за необхідності. Це означає, що незалежно від розміру діапазону, який описує функція range, він завжди займатиме фіксований обсяг пам'яті.

Найпростіший варіант range – передати тільки значення stop:

In [1]: range(5)
Out[1]: range(0, 5)

In [2]: list(range(5))
Out[2]: [0, 1, 2, 3, 4]

Якщо передаються два аргументи, перший використовується як start, а другий - як stop:

In [3]: list(range(1, 5))
Out[3]: [1, 2, 3, 4]

Щоб указати крок послідовності, потрібно передати три аргументи:

In [4]: list(range(0, 10, 2))
Out[4]: [0, 2, 4, 6, 8]

In [5]: list(range(0, 10, 3))
Out[5]: [0, 3, 6, 9]

За допомогою range також можна генерувати низхідні послідовності чисел:

In [6]: list(range(10, 0, -1))
Out[6]: [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]

In [7]: list(range(5, -1, -1))
Out[7]: [5, 4, 3, 2, 1, 0]

Для отримання низхідної послідовності треба використовувати негативний крок і вказати start - більшим числом, а stop - меншим. У низхідній послідовності крок теж може бути різним:

In [8]: list(range(10, 0, -2))
Out[8]: [10, 8, 6, 4, 2]

Функція підтримує негативні значення start та stop:

In [9]: list(range(-10, 0, 1))
Out[9]: [-10, -9, -8, -7, -6, -5, -4, -3, -2, -1]

In [10]: list(range(0, -10, -1))
Out[10]: [0, -1, -2, -3, -4, -5, -6, -7, -8, -9]

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

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

In [11]: nums = range(5)

In [12]: nums
Out[12]: range(0, 5)

In [13]: 3 in nums
Out[13]: True

In [14]: 7 in nums
Out[14]: False

Можна отримати певний елемент діапазону:

In [15]: nums = range(5)

In [16]: nums[0]
Out[16]: 0

In [17]: nums[-1]
Out[17]: 4

Range підтримує зрізи:

In [18]: nums = range(5)

In [19]: nums[1:]
Out[19]: range(1, 5)

In [20]: nums[:3]
Out[20]: range(0, 3)

Можна отримати довжину діапазону:

In [21]: nums = range(5)

In [22]: len(nums)
Out[22]: 5

А також мінімальний та максимальний елемент:

In [23]: nums = range(5)

In [24]: min(nums)
Out[24]: 0

In [25]: max(nums)
Out[25]: 4

Крім того, об'єкт range підтримує метод index:

In [26]: nums = range(1, 7)

In [27]: nums.index(3)
Out[27]: 2