Циклы позволяют автоматизировать выполнение последовательностей задач в программах.
В данном руководстве мы рассмотрим цикл for в языке программирования Python 3.
Цикл for повторно выполняет код согласно счетчику или переменной цикла. Циклы for используются тогда, когда количество итераций известно заранее, до запуска цикла (в отличие от цикла while, который выполняется согласно логическим условиям).
Основы работы с циклом for
В Python циклы for создаются таким образом:
for [iterating variable] in [sequence]:
[do something]
Цикл будет выполнять заданное действие ([do something]) до конца последовательности.
Для примера рассмотрим цикл for, который перебирает диапазон значений:
for i in range(0,5):
print(i)
Такая программа вернёт следующий вывод:
0
1
2
3
4
Этот цикл 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.
for i in range(6):
print(i)
В примере выше аргумент stop имеет значение 6, потому код выполнит итерацию от 0 до 6 (исключая 6).
0
1
2
3
4
5
Теперь попробуйте добавить аргумент start. Функция будет иметь такой вид:
range(start, stop)
Укажите диапазон, в котором нужно выполнить итерацию:
for i in range(20,25):
print(i)
В данном случае перебор начинается с 20 (включительно) и заканчивается на 25 (исключительно).
20
21
22
23
24
Аргумент step в функции range() определяет шаг (как в срезах строк); его можно использовать для пропуска значений в последовательности.
Попробуйте использовать все доступные аргументы. Они указываются в такой последовательности:
range(start, stop, step)
Например:
for i in range(0,15,3):
print(i)
В данном случае цикл for переберёт значения от 0 до 15 с шагом 3, в результате он выведет каждое третье число:
0
3
6
9
12
Также в качестве шага можно использовать отрицательные числа, тогда цикл будет перебирать значения в обратном направлении. В таком случае не забудьте откорректировать аргументы start и stop (поставьте их по убыванию).
for i in range(100,0,-10):
print(i)
В данном примере 100 – значение start, 0 – stop, -10 – шаг.
100
90
80
70
60
50
40
30
20
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 добавляет в него данные:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Также можно выполнять итерацию строк:
8host = '8Host'
for letter in 8host:
print(letter)
8
H
o
s
t
Аналогичным образом можно выполнить итерацию кортежа.
При итерации словарей важно помнить о структуре «ключ: значение», чтобы вызывать правильные элементы из словаря. Например:
willy_orca = {'name': 'Willy', 'animal': 'orca', 'color': 'black', 'location': 'ocean'}
for key in willy_orca:
print(key + ': ' + willy_orca[key])
name: Willy
animal: orca
location: ocean
color: black
При использовании словарей в циклах for итерируемое значение соответствует ключу кловаря, а dictionary_variable[iterating_variable] соответствует значению. Таким образом, в примере выше key – ключ, а willy_orca[key] – значение.
Вложенные циклы for
Python позволяет вкладывать циклы друг в друга.
Вложенный цикл – это цикл, который встречается внутри другого цикла. Структурно это похоже на выражение if.
Читайте также: Условные операторы в Python 3
Вложенный цикл выглядит так:
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
a
b
c
3
a
b
c
Программа завершает первую итерацию, выводя на экран 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 выполняют блок кода заданное количество раз.
Читайте также: