Шаг 83.
Основы языка Python.
Списки, кортежи, множества и диапазоны. Диапазоны

    На этом шаге мы рассмотрим диапазоны.

    Диапазоны у как следует из самого их названия, - это диапазоны целых чисел с заданными начальным и конечным значением и шагом (промежутком между соседними числами). Как и списки, кортежи и множества, диапазоны представляют собой последовательности и, подобно кортежам, являются неизменяемыми.

    Важнейшим преимуществом диапазонов перед другими видами последовательностей является их компактность - вне зависимости от количества входящих в него элементов-чисел, диапазон всегда отнимает один и тот же объем оперативной памяти. Однако в диапазон могут входить лишь последовательно стоящие друг за другом числа - сформировать диапазон на основе произвольного набора чисел или данных другого типа, даже чисел с плавающей точкой, невозможно.

    Диапазоны чаще всего используются для проверки вхождения значения в какой-либо интервал и для организации циклов.

    Для создания диапазона применяется функция range ():

  range([<Начало>, ] <Конец> [, <Шаг>] )

    Первый параметр задает начальное значение - если он не указан, используется значение 0. Во втором параметре указывается конечное значение. Следует заметить, что это значение не входит в возвращаемый диапазон. Если параметр <Шаг> не указан, то используется значение 1. Примеры:

>>> r = range(1, 10)
>>> for i in r: print(i, end=" ")
1 2 3 4 5 6 7 8 9
>>> r = range(10, 110, 10)
>>> for i in r: print(i, end=" ")
10 20 30 40 50 60 70 80 90 100
>>> r = range(10, 1, -1)
>>> for i in r: print(i, end=" ")
10 9 8 7 6 5 4 3 2

    Преобразовать диапазон в список, кортеж, обычное или неизменяемое множество можно с помощью функций list (), tuple (), set () или frozenset () соответственно:

>>> list(range(1, 10)) # Преобразуем в список
[1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> tuple(range(1, 10)) # Преобразуем в кортеж 
(1, 2, 3, 4, 5, 6, 7, 8, 9)
>>> set(range(1, 10)) # Преобразуем в множество
{1, 2, 3, 4, 5, 6, 7, 8, 9}

    Диапазоны поддерживают доступ к элементу по индексу, получение среза (в результате возвращается также диапазон), проверку на вхождение и невхождение, функции len(), min(), max(), методы index() и count(). Примеры:

>>> r = range(1, 10)
>>> r[2], r[-1]
(3, 9)
>>> r[2:4]
range(3, 5)
>>> 2 in r, 12 in r
(True,   False)
>>> 3 not in r, 13 not in r
(False, True)
>>> len(r), min(r), max(r)
(9, 1, 9)
>>> r.index(4), r.count(4)
(3, 1)

    В Python 3.3 появилась поддержка операторов, позволяющих сравнить два диапазона:

    А в Python 3.4 диапазоны стали поддерживать свойства start, stop и step, возвращающие, соответственно, начальную, конечную границы диапазона и его шаг:

>>> r = range(1, 10)
>>> r.start, r.stop, r.step
(1, 10, 1)

    Со следующего шага мы начнем рассматривать модуль itertools.




Предыдущий шаг Содержание Следующий шаг