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

Тип даних range

Робота з послідовностями цілих чисел — доволі розповсюджена задача. В Python для цього є спеціальний тип даних: range.

З англійської "range" перекладається як "діапазон". Власне range і являє собою послідовність цілих чисел у певному діапазоні.

Створити діапазон можна за допомогою функції range(). Першим параметром цієї функції є початкове значення діапазону чисел, це число буде включено у послідовність цілих чисел. Другий параметр — кінцеве значення діапазону, це число не буде включене у послідовність.

Створимо послідовність чисел 1, 2, ... 5:

>>> r = range(1, 6)
>>> r
range(1, 6)
>>> type(r)
<class 'range'>
>>>

Оскільки range є послідовністю, можна привести до послідовності іншого типу:

>>> list(r)
[1, 2, 3, 4, 5]
>>>

Якщо діапазон починається з 0, то при його створенні можна вказати лише кінцеве значення:

>>> r = range(5)
>>> r
range(0, 5)
>>> list(r)
[0, 1, 2, 3, 4]
>>>

Більш того — ще можна вказати крок послідовності:

>>> r = range(1, 10, 2)
>>> r
range(1, 10, 2)
>>> list(r)
[1, 3, 5, 7, 9]
>>>

Початок, кінець, крок... нічого не нагадує? Так! Усе так само як у зрізаннях.

У послідовності має бути довжина. Перевіримо:

>>> len(r)
5
>>>

Доступ до елементів послідовності по індексам:

>>> r[-1]
9
>>>

range — послідовність немутабельна:

>>> r[0] = 7
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'range' object does not support item assignment
>>>

Зрізання:

>>> r[1:-1]
range(3, 9, 2)
>>> list(r[1:-1])
[3, 5, 7]
>>>

Перевірити чи входить число у діапазон:

>>> 0 in range(100)
True
>>> 100 in range(100)
False
>>> 3 in range(0, 100, 3)
True
>>>

Ну і перебрати у циклі for таку послідовність теж можна:

>>> for n in r:
...     print(n)
...
1
3
5
7
9
>>>