Функція range¶
Функція range повертає незмінну послідовність чисел як об'єкт range.
Синтаксис функції:
Параметри функції:
- start - з якого числа починається послідовність. За замовчуванням - 0
- stop - до якого числа продовжується послідовність чисел. Зазначене число не входить до діапазону
- step - з яким кроком ростуть числа. За замовчуванням 1
Функція range зберігає лише інформацію про значення start, stop і step і обчислює значення за необхідності. Це означає, що незалежно від розміру діапазону, який описує функція range, він завжди займатиме фіксований обсяг пам'яті.
Найпростіший варіант range – передати тільки значення stop:
Якщо передаються два аргументи, перший використовується як start, а другий - як stop:
Щоб указати крок послідовності, потрібно передати три аргументи:
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 - меншим. У низхідній послідовності крок теж може бути різним:
Функція підтримує негативні значення 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
Можна отримати певний елемент діапазону:
Range підтримує зрізи:
In [18]: nums = range(5)
In [19]: nums[1:]
Out[19]: range(1, 5)
In [20]: nums[:3]
Out[20]: range(0, 3)
Можна отримати довжину діапазону:
А також мінімальний та максимальний елемент:
Крім того, об'єкт range підтримує метод index: