Цикл for in range 1 6 print Python Rocks: сколько итераций и функция range

0
17

Краткая памятка по циклу for и range

  1. Функция range(start, stop, step) генерирует последовательность целых чисел.
  2. Параметр stop не включается в последовательность.
  3. По умолчанию start = 0, step = 1.
  4. Цикл for i in range(1, 6) выполнит 5 итераций (1,2,3,4,5).
  5. range не поддерживает float — только целые числа.
  6. В Python 3 range — это ленивый объект, экономящий память.
  7. Для создания списка из range используйте list(range(…)).
  8. Отрицательный шаг позволяет идти в обратном порядке.
  9. range(0) или range(0,0) создает пустую последовательность.
  10. Функция xrange существовала только в Python 2.
  11. Проверяйте границы range, чтобы избежать бесконечных циклов.
  12. Используйте len() для подсчета количества элементов в range.

Что делает функция range в Python?

Презентация \ - изображение номер один
Презентация \ — изображение номер один

Если вы опытный разработчик, или даже новичок, вы, несомненно, слышали о функции Python range(). Но что же она делает? В двух словах, она генерирует список чисел, который обычно используется для работы с циклом for. Существует много вариантов использования. Зачастую, ее используют, когда нужно выполнить действие X раз, где вы можете использовать индекс. В других случаях вам, возможно, понадобится сделать итерацию по списку (или по другому итерируемому объекту), имея доступ к индексу.

Функция range() имеет небольшие отличия в работе на версии Python 2.x и 3.x, тем не менее у них остается одинаковая концепция. К этому вопросу мы доберемся немного позже.

Примеры функции range()

For loop in python - изображение номер два
For loop in python — изображение номер два

>>> >>> for i in range(5): print(i) 0 1 2 3 4 >>> >>> for i in range(3, 6): print(i) 3 4 5 >>> >>> for i in range(4, 10, 2): print(i) 4 6 8 >>> >>> for i in range(0, -10, -2): print(i) 0 -2 -4 -6 -8

>>> my_list = [‘один’, ‘два’, ‘три’, ‘четыре’, ‘пять’] >>> my_list_len = len(my_list) >>> for i in range(0, my_list_len): print(my_list[i]) один два три четыре пять

ЧИТАТЬ ТАКЖЕ:  Трансляция программ на Python в машинные коды и их исполнение

Range полезна в итерации с условиями. Рассмотрим примере песни “99 Bottles of Beer on the Wall…” со следующим кодом:

for i in range(99, 0, -1): if i == 1: print(‘1 bottle of beer on the wall, 1 bottle of beer!’) print(‘So take it down, pass it around, no more bottles of beer on the wall!’) elif i == 2: print(‘2 more bottles of beer on the wall, 2 more bottles of beer!’) print(‘So take one down, pass it around, 1 more bottle of beer on the wall!’) else: print(‘{0} bottles of beer on the wall, {0} bottles of beer!’.format(i)) print(‘So take it down, pass it around, {0} more bottles of beer on the wall!’.format(i — 1))

Прекрасно! Наконец-то вы видите настоящую силу Python. Если вы еще немного в замешательстве, рекомендую прочитать статью 99 бутылок пива (Википедия).

range против функций xrange в python

Функция range python - изображение номер три
Функция range python — изображение номер три

Вы должно быть слышали о функции, известной как xrange(). Эта функция представлена в Python 2.x, и была переименована в range() в Python 3.x. Так в чем же разница? В Python 2.x range() создавала список, а xrange() возвращала итератор — объект последовательности. Мы можем увидеть это в следующем примере:

В Python 3.x. у функции range() есть свой собственный тип. Говоря языком простых терминов, если вы хотите воспользоваться range() в цикле for, вы сделаете это с легкостью. Однако вы не можете использовать его как объект списка. Например, вы не можете разбить на срезы тип range.

Когда вы используете итератор, каждый цикл оператора for выдает мгновенно последующий номер на лету. В то время как исходная функция range() производит все числа мгновенно, прежде чем цикл for начнет выполняться.

Проблема с исходной функцией range() (в Python 2.x) заключалась в том, что она требовала очень большой объем памяти при создании большого количества чисел. Однако в нем, как правило, можно работать быстрее с небольшим количеством чисел.

ЧИТАТЬ ТАКЖЕ:  Оператор не равно в Python: как написать и использовать

Обратите внимание, что в Python 3.x вы все равно можете создать список, передав генератор, возвращенный функции list(). Следующим образом:

Чтобы увидеть разницу в скорости действия в функции range() и xrange(), посмотрите эту статью (english).

Использование float с функцией range()

Программирование на - изображение номер четыре
Программирование на — изображение номер четыре

К сожалению, функция range() не поддерживает тип float. Тем не менее, не спешите расстраиваться! Мы можем легко использовать его с помощью данной функции. Есть несколько способов сделать это, вот один из них.

>>> >>> def frange(start, stop, step): i = start while i < stop: yield i i += step >>> for i in frange(0.5, 1.0, 0.1): print(i) 0.5 0.6 0.7 0.8 0.9 1.0

Тест на знание функции Range

Выберите код, который вернет наибольшее значение? (функция sum считает сумму значений списка))

Часто задаваемые вопросы о циклах for и range в Python

Вопрос: Сколько итераций сделает цикл for i in range(1, 6): print(‘Python Rocks’)?
Ответ: Цикл выполнит 5 итераций, так как range(1, 6) генерирует числа от 1 до 5 включительно.

Вопрос: В чем разница между range(5) и range(0,5)?
Ответ: Оба варианта генерируют одинаковую последовательность чисел от 0 до 4, так как по умолчанию range начинается с 0.

Вопрос: Можно ли использовать отрицательный шаг в range?
Ответ: Да, например range(10, 0, -2) создаст последовательность 10, 8, 6, 4, 2.

Вопрос: Что вернет range(1, 6) в Python 3?
Ответ: Объект range, который является итерируемым, а не списком. Для преобразования в список используйте list(range(1,6)).

Вопрос: Какой тип данных у элементов range?
Ответ: Все элементы range являются целыми числами (int).

Вопрос: Что произойдет при попытке использовать float в range?
Ответ: Функция range() не принимает числа с плавающей точкой, возникнет ошибка TypeError.

Вопрос: Сколько итераций в цикле for i in range(5):?
Ответ: Ровно 5 итераций, от 0 до 4 включительно.

Вопрос: Как создать range от 1 до 10 с шагом 3?
Ответ: Используйте range(1, 11, 3), что даст числа 1, 4, 7, 10.

Вопрос: Что такое xrange в Python?
Ответ: xrange — это функция в Python 2, аналог range из Python 3. В Python 3 xrange удален, остался только range.

Вопрос: Можно ли использовать range в обратном порядке?
Ответ: Да, с помощью отрицательного шага: range(5, 0, -1) даст 5, 4, 3, 2, 1.