Функция range() в Python
Сегодня мы рассмотрим нетрудную, но важную тему, о которой обязательно нужно сказать хотя бы пару слов. Речь идет о методе range в питон, о том, что это такое и для используется мы сегодня и поговорим.
Циклы в питоне: for, range
Перед тем, как непосредственно перейти к функции range, стоит напомимать вам о циклах. Что такое циклы? Это процесс, который повторяется многократно.
numbers = [‘one’, ‘two’, ‘three’]
for number in numbers:
print(number)
one
two
three
В данном случае, цикл пробежался по всему списку и выполнил над каждым элементов определенное действие, а именно вывел на экран.
Python: функция range()
Функция range позволяет нам генерировать последовательные числа (далее на примерах все станет ясно). Он принимает обязательный параметр stop, до каких пор генерировать. Можно так же указать параметр start и step. Теперь к примерам.
for i in range(5):
print(i) => 0,1,2,3,4
for a in range(2, 7):
print(a) => 2,3,4,5,6
for b in range(2, 15, 3):
print(b) => 2,5,8,11,14
Верхний предел range включительно
По умолчанию функция range, как уже можно было заметить, ограничена сверху.
for num in range(2, 7):
print(num) => 2,3,4,5,6
Как вы видите, на вернулись все числа от двойки до семи, но последнее было не включительно.
start = 1
stop = 9
step = 1
stop = stop + step
for num in range(start, stop, step):
print(num, end = «, «)
Чтобы избежать такого, мы можем использовать этот код. Тут после того, как к последнему значению мы прибавим шаг, функция будет работать включительно до последнего элемента.
Различия между range и xrange
В старых версия питона была так же функция xrange. Разница между двумя функциями в том, что xrange возвращала итератор, в то время как range список. В новых версиях осталась функция range, которая реализована как xrange.
Примеры функции python range()
Теперь я предлагаю, в качестве промежуточного задания взглянуть на несколько тестиков и попробовать понять как они работают.
for it in range(10, -1, -2):
… print(it, end = «, «)for it in range(1, 7):
… print(it, end = «, «)
Ну что, справились? Если нет, то продолжайте читать. В первом случае наша точка старта равно 10. Точка стопа -1, а шаг, с которым мы двигаемся -2. Да, идти назад можно точно так же, как и вперед.
Если вы не знаете, что делает end, то мы и это поясним: end после каждый итерации цикла будет в конце ставить тот знак, который вы поставите.
for it in range(1, 7):
… print(it, end = «, «) => 1,2,3,4,5,6,
Или еще такой пример.
for it in range(1, 7):
… print(it, end = «abc «) => 1abc2abc3abc4abc5abc6abc
Очень удобная вещь, который можно пользоваться.
Декрементация с range()
range позволяет нам не только инкрементировать числа, но и декрементировать. Только по умолчанию она их все же инкрементирует, поэтому для декрементации необходимо ввести все три параметра.
for it in range(5, -1, -1):
… print(it, end = » «) => 5 4 3 2 1 0
Углубляемся в range()
Давайте теперь посмотрим на range со всех сторон. Данная функция обычно используется в следующих случаях: в теле цикла и при создание эффективных итераций целых чисел. С range можно обращаться так же, как и со списками.
print(range(3)[1]) => 1
print(range(3)[2]) => 2
Можно так же использовать и срезы, но результат будет немного странным.
print(range(6)[2:5])
# Результат: range(2, 5)
float и range()
Напоследок нам нужно рассмотреть еще один момент. Как можно было заметить, мы все время работали только с целыми числами, как быть с дробными? Давайте для начала в двух словах поговорим о типе данных float. float — это специальный тип данных, который может обрабатывать десятичные числа (или числа с плавающей точкой)
1.5 ; 12.75 и т. д.
Так вот, что будет если мы в range засунем именно их? Посмотрим на пример.
for i in range(3.3):
print(i)
Traceback (most recent call last):
File «<stdin>», line 1, in <module>
TypeError: ‘float’ object cannot be interpreted as an integer
Нам выдалась ошибка. Отсюда делам вывод, что range работает только с целыми числами
Тест на знание python
- Что делает функция range и для чего может быть полезна.
- В чем различия между range и xrange?
- a = 1
b = 10
for num in range(a, b + 1):
print(num) => ????
Что будет в результате? Объясните свой ответ. - Что такое циклы?
- Как работает функция range с числами с плавающей точкой?
- Что такое end?
Вот и подошла к концу сегодняшняя статья. Хоть тема и не сказать сложная, однако и она требует какой-никакой практике, поэтому прямо сейчас идите в редактор кода и напишите простенькую программу, используя полученные сегодня знания. Удачи вам и всегда помните: чтобы стать программистом надо очень много практиковаться!