- Работа с циклами for в Python 3
- Основы работы с циклом for
- Функция range()
- Цикл for и последовательные типы данных
- Вложенные циклы for
- Заключение
- Синтаксис и возможности цикла for Python
- Синтаксис цикла For
- Оператор прерывания в python — break
- Оператор пропуска python — continue
- Итерация по спискам с функцией range()
Работа с циклами for в Python 3
Циклы позволяют автоматизировать выполнение последовательностей задач в программах.
В данном руководстве мы рассмотрим цикл for в языке программирования Python 3.
Цикл for повторно выполняет код согласно счетчику или переменной цикла. Циклы for используются тогда, когда количество итераций известно заранее, до запуска цикла (в отличие от цикла while, который выполняется согласно логическим условиям).
Основы работы с циклом for
В Python циклы for создаются таким образом:
for [iterating variable] in [sequence]:
[do something]
Цикл будет выполнять заданное действие ([do something]) до конца последовательности.
Для примера рассмотрим цикл for, который перебирает диапазон значений:
Такая программа вернёт следующий вывод:
Этот цикл for использует i в качестве итерационной переменной. Последовательность существует в диапазоне от 0 до 5.
Выражение print внутри цикла выводит одно целое число для каждой итерации.
Примечание: В программировании отсчёт, как правило, начинается с 0. В диапазоне от 0 до 5 цикл выводит 0, 1, 2, 3, 4.
Циклы for обычно используются в ситуациях, когда программе необходимо повторить блок кода определённое количество раз.
Функция range()
Функция range() – это один из встроенных неизменяемых типов последовательностей Python. В циклах range() указывает, сколько раз нужно повторить последовательность.
Функция range() имеет такие аргументы:
- start указывает целое число, с которого начинается последовательность (включительно) . Если этот аргумент не указан, по умолчанию используется значение 0.
- stop нужно использовать всегда. Это последнее целое число последовательности (исключительно).
- step определяет шаг: насколько нужно увеличить (в случае с отрицательными числами уменьшить) следующую итерацию. Если аргумент step пропущен, по умолчанию используется 1.
Попробуйте передать функции range() несколько аргументов.
Для начала используйте только stop.
В примере выше аргумент stop имеет значение 6, потому код выполнит итерацию от 0 до 6 (исключая 6).
Теперь попробуйте добавить аргумент start. Функция будет иметь такой вид:
Укажите диапазон, в котором нужно выполнить итерацию:
for i in range(20,25):
print(i)
В данном случае перебор начинается с 20 (включительно) и заканчивается на 25 (исключительно).
Аргумент step в функции range() определяет шаг (как в срезах строк); его можно использовать для пропуска значений в последовательности.
Попробуйте использовать все доступные аргументы. Они указываются в такой последовательности:
for i in range(0,15,3):
print(i)
В данном случае цикл for переберёт значения от 0 до 15 с шагом 3, в результате он выведет каждое третье число:
Также в качестве шага можно использовать отрицательные числа, тогда цикл будет перебирать значения в обратном направлении. В таком случае не забудьте откорректировать аргументы start и stop (поставьте их по убыванию).
for i in range(100,0,-10):
print(i)
В данном примере 100 – значение start, 0 – stop, -10 – шаг.
В Python циклы for часто используют функцию range() как один из параметров итерации.
Цикл for и последовательные типы данных
Списки и другие последовательные типы данных также можно использовать в качестве параметров итерации для цикла. Например, вместо функции range() вы можете определить список и итерацию по этому списку.
Присвойте список переменной, а затем запустите итерацию по нему:
sharks = [‘hammerhead’, ‘great white’, ‘dogfish’, ‘frilled’, ‘bullhead’, ‘requiem’] for shark in sharks:
print(shark)
В данном случае цикл выведет каждый элемент списка.
hammerhead
great white
dogfish
frilled
bullhead
requiem
Списки и другие последовательные типы данных (строки и кортежи) часто используются в циклах, потому что они итерируемые. Можно комбинировать эти типы данных с функцией range(), чтобы добавить элементы в список, например:
sharks = [‘hammerhead’, ‘great white’, ‘dogfish’, ‘frilled’, ‘bullhead’, ‘requiem’] for item in range(len(sharks)):
sharks.append(‘shark’)
print(sharks)
[‘hammerhead’, ‘great white’, ‘dogfish’, ‘frilled’, ‘bullhead’, ‘requiem’, ‘shark’, ‘shark’, ‘shark’, ‘shark’, ‘shark’, ‘shark’]
Циклы for позволяют составлять новые списки:
integers = [] for i in range(10):
integers.append(i)
print(integers)
В данном случае инициированный список integers пуст, но цикл for добавляет в него данные:
Также можно выполнять итерацию строк:
8host = ‘8Host’
for letter in 8host:
print(letter)
8
H
o
s
t
Аналогичным образом можно выполнить итерацию кортежа.
При итерации словарей важно помнить о структуре «ключ: значение», чтобы вызывать правильные элементы из словаря. Например:
willy_orca =
for key in willy_orca:
print(key + ‘: ‘ + willy_orcaПитон for с шагом)
name: Willy
animal: orca
location: ocean
color: black
При использовании словарей в циклах for итерируемое значение соответствует ключу кловаря, а dictionary_variable[iterating_variable] соответствует значению. Таким образом, в примере выше key – ключ, а willy_orcaПитон for с шагом – значение.
Вложенные циклы for
Python позволяет вкладывать циклы друг в друга.
Вложенный цикл – это цикл, который встречается внутри другого цикла. Структурно это похоже на выражение if.
Вложенный цикл выглядит так:
for [first iterating variable] in [outer loop]: # Outer loop
[do something] # Optional
for [second iterating variable] in [nested loop]: # Nested loop
[do something]
Программа сначала выполняет внешний цикл. Внутри первой итерации внешнего цикла запускается внутренний, вложенный цикл. Затем программа возвращается обратно к началу внешнего цикла, завершает вторую итерацию и снова вызывает вложенный цикл. После завершения вложенного цикла программа возвращается в начало внешнего цикла. Это будет происходить до тех пор, пока последовательность не будет завершена или прервана (или пока какое-то выражение не приведёт к нарушению процесса).
Попробуйте создать вложенный цикл. В данном примере внешний цикл будет перебирать список чисел (num_list), а внутренний – алфавит (alpha_list).
num_list = [1, 2, 3] alpha_list = [‘a’, ‘b’, ‘c’] for number in num_list:
print(number)
for letter in alpha_list:
print(letter)
Программа завершает первую итерацию, выводя на экран 1, после чего запускается внутренний цикл, который выводит последовательно «a, b, c». После этого программа возвращается в начало внешнего цикла, выводит 2, а затем снова обрабатывает внутренний цикл.
Вложенные циклы for могут быть полезны для перебора элементов в списках, составленных из списков. Если в списке, который состоит из списков, использовать только один цикл, программа будет выводить каждый внутренний список в качестве элемента:
list_of_lists = [[‘hammerhead’, ‘great white’, ‘dogfish’],[0, 1, 2],[9.9, 8.8, 7.7]] for list in list_of_lists:
print(list)
[‘hammerhead’, ‘great white’, ‘dogfish’] [0, 1, 2] [9.9, 8.8, 7.7]
Чтобы вывести каждый отдельный элемент внутренних списков, нужно использовать вложенный цикл.
list_of_lists = [[‘hammerhead’, ‘great white’, ‘dogfish’],[0, 1, 2],[9.9, 8.8, 7.7]] for list in list_of_lists:
for item in list:
print(item)
hammerhead
great white
dogfish
0
1
2
9.9
8.8
7.7
Пример вложенного списка for можно найти в другой нашей статье.
Заключение
Теперь вы знаете, как работает цикл for в языке программирования Python. Циклы for выполняют блок кода заданное количество раз.
Читайте также:
Синтаксис и возможности цикла for Python
Циклы python — for и while представляют собой операторы языка программирования, то есть операторы итерации, которые позволяют повторять код определенное количество раз.
Синтаксис цикла For
Как уже упоминалось ранее, цикл for в Python является итератором, основанным на цикле. Он проходит по элементам list и tuple, строкам, ключам словаря и другим итерируемым объектам.
В Python цикл начинается с ключевого слова for , за которым следует произвольное имя переменной, которое будет хранить значения следующего объекта последовательности. Общий синтаксис for. in в python выглядит следующим образом:
Элементы «последовательности» перебираются один за другим «переменной» цикла; если быть точным, переменная указывает на элементы. Для каждого элемента выполняется «действие».
Пример простого цикла for в Python:
>>> languages = ["C", "C++", "Perl", "Python"] >>> for x in languages: . print(x) . C C++ Perl Python >>>Блок else является особенным; в то время как программист, работающий на Perl знаком с ним, это неизвестная конструкция для программистов, которые работают на C и C++. Семантически он работает точно так же, как и в цикле while .
Он будет выполнен только в том случае, если цикл не был «остановлен» оператором break . Таким образом, он будет выполнен только после того, как все элементы последовательности будут пройдены.
Оператор прерывания в python — break
Если в программе цикл for должен быть прерван оператором break , цикл будет завершен, и поток программы будет продолжен без выполнения действий из else .
Обычно фразы break в pyton связаны с условными операторами.
edibles = ["отбивные", "пельмени", "яйца", "орехи"] for food in edibles: if food == "пельмени": print("Я не ем пельмени!") break print("Отлично, вкусные " + food) else: print("Хорошо, что не было пельменей!") print("Ужин окончен.")Если мы запустим этот код, получим следующий результат:
Отлично, вкусные отбивные Я не ем пельмени! Ужин окончен.
Удалим «пельмени» из нашего списка еды и получим следующее:
Отлично, вкусные отбивные Отлично, вкусные яйца Отлично, вкусные орехи Хорошо, что не было пельменей! Ужин окончен.
Оператор пропуска python — continue
Предположим, нам «пельмени» нам нужно просто пропустить и продолжить прием пищи. Тогда нужно использовать оператор continue , для перехода к следующему элементу.
В следующем маленьком скрипте python мы используем continue , чтобы продолжить, итерацию по списку, когда мы сталкиваемся с пельменями.
edibles = ["отбивные", "пельмени", "яйца", "орехи"] for food in edibles: if food == "пельмени": print("Я не ем пельмени!") continue print("Отлично, вкусные " + food) else: print("Ненавижу пельмени!") print("Ужин окончен.")Результат будет следующим:
Отлично, вкусные отбивные Я не ем пельмени! Отлично, вкусные яйца Отлично, вкусные орехи Ненавижу пельмени! Ужин окончен.
Итерация по спискам с функцией range()
Если вам нужно получить доступ к индексам списка, не очевидно как использовать цикл for для этой задачи. Мы можем получить доступ ко всем элементам, но индекс элемента остается недоступным. Есть способ получить доступ как к индексу элемента, так и к самому элементу. Для этого используйте функцию range() в сочетании с функцией длины len() :