Среда разработки, основы языка и типы данных



бет25/41
Дата27.10.2023
өлшемі331,81 Kb.
#188518
түріПрограмма
1   ...   21   22   23   24   25   26   27   28   ...   41
Байланысты:
Лекция

Функция range()


Теперь пришло время познакомиться со встроенной в Python функцией range(). "Range" переводится как "диапазон". Она может принимать один, два или три аргумента. Их назначение такое же как у функции randrange() из модуля random. Если задан только один, то генерируются числа от 0 до указанного числа, не включая его. Если заданы два, то числа генерируются от первого до второго, не включая его. Если заданы три, то третье число – это шаг.
Однако, в отличие от randrange(), функция range() генерирует не одно случайное число в указанном диапазоне. Она вообще не генерирует случайные числа. Она генерирует последовательность чисел в указанном диапазоне. Так, range(5, 11) сгенерирует последовательность 5, 6, 7, 8, 9, 10. Однако это будет не структура данных типа "список". Функция range() производит объекты своего класса – диапазоны:
>>> a = range(-10, 10)
>>> a
range(-10, 10)
>>> type(a)

Несмотря на то, что мы не видим последовательности чисел, она есть, и мы можем обращаться к ее элементам:
>>> a[0]
-10
>>> a[5]
-5
>>> a[15]
5
>>> a[-1]
9
Хотя изменять их нельзя, так как, в отличие от списков, объекты range() относятся к группе неизменяемых:
>>> a[10] = 100
Traceback (most recent call last):
File "", line 1, in
TypeError: 'range' object does not support item assignment

Цикл for и range()


Итак, зачем нам понадобилась функций range() в теме про цикл for? Дело в том, что вместе они образуют неплохой тандем. For как цикл перебора элементов, в отличие от while, позволяет не следить за тем, достигнут ли конец структуры. Не надо вводить счетчик для этого, изменять его и проверять условие в заголовке. С другой стороны, range() дает последовательность целых чисел, которые можно использовать как индексы для элементов того же списка.
>>> range(len(spisok))
range(0, 4)
Здесь с помощью функции len() измеряется длина списка. В данном случае она равна четырем. После этого число 4 передается в функцию range(), и она генерирует последовательность чисел от 0 до 3 включительно. Это как раз индексы элементов нашего списка.
Теперь "соединим" for и range():
>>> for i in range(len(spisok)):
... spisok[i] += 2
...
>>> spisok
[16, 46, 26, 36]
В заголовке цикла for берутся элементы вовсе не списка, а объекта range. Список, элементы которого планируется перезаписывать, тут по-сути не фигурирует. Если заранее знать длину списка, то заголовок может выглядеть так: for i in range(4). То, как используется i в теле цикла, вопрос второй. Примечание. Вместо идентификатора i может быть любой другой.


Достарыңызбен бөлісу:
1   ...   21   22   23   24   25   26   27   28   ...   41




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет