Как создавать циклы For в Python 3
Использование циклов в компьютерном программировании позволяет нам автоматизировать и многократно повторять одни и те же задачи. В этом уроке мы рассмотрим цикл for в Python.
Цикл for
реализует повторное выполнение кода на основе счетчика цикла или переменной цикла. Это означает, что циклы for
используются чаще всего, когда количество итераций известно до входа в цикл, в отличие от циклов while, которые основаны на условиях.
Предпосылки
У вас должен быть установлен Python 3 и настроена среда программирования на вашем компьютере или сервере. Если у вас не настроена среда программирования, вы можете обратиться к руководствам по установке и настройке среды программирования на вашем сервере, подходящей для вашей операционной системы (Ubuntu, CentOS, Debian и т. д.).
Для циклов
В Python циклы for
строятся следующим образом:
for [iterating variable] in [sequence]:
[do something]
Выполняемое что-то
будет выполняться до тех пор, пока последовательность не закончится.
Информация: Чтобы следовать примеру кода в этом руководстве, откройте интерактивную оболочку Python в вашей локальной системе, выполнив команду python3
. Затем вы можете копировать, вставлять или редактировать примеры, добавляя их после приглашения >>>
.
Давайте посмотрим на цикл for
, который перебирает диапазон значений:
for i in range(0,5):
print(i)
Когда мы запускаем эту программу, вывод генерирует следующее:
Output0
1
2
3
4
Этот цикл for
устанавливает i
в качестве переменной итерации, и последовательность существует в диапазоне от 0 до 5.
Затем внутри цикла мы выводим одно целое число за итерацию цикла. Имейте в виду, что в программировании мы, как правило, начинаем с индекса 0, поэтому, хотя выводятся 5 чисел, они находятся в диапазоне от 0 до 4.
Вы часто будете видеть и использовать циклы for
, когда программе нужно повторить блок кода несколько раз.
Для циклов с использованием диапазона()
Одним из встроенных неизменяемых типов последовательностей Python является range()
. В циклах range()
используется для контроля количества повторений цикла.
При работе с range()
вы можете передать ему от 1 до 3 целочисленных аргументов:
start
указывает целочисленное значение, с которого начинается последовательность, если это не указано, тоstart
начинается с 0stop
требуется всегда и представляет собой целое число, до которого ведется подсчет, но не включаетсяstep
устанавливает, насколько увеличить (или уменьшить в случае отрицательных чисел) следующую итерацию, если это опущено, тоstep
по умолчанию равно 1
Мы рассмотрим несколько примеров передачи различных аргументов в range()
.
Во-первых, давайте передадим только аргумент stop
, чтобы наша последовательность была настроена как range(stop)
:
for i in range(6):
print(i)
В приведенной выше программе аргумент stop
равен 6, поэтому код будет повторяться от 0 до 6 (исключая 6):
Output0
1
2
3
4
5
Далее мы рассмотрим range(start, stop)
со значениями, переданными для того, когда итерация должна начинаться и когда она должна останавливаться:
for i in range(20,25):
print(i)
Здесь диапазон варьируется от 20 (включительно) до 25 (не включая), поэтому результат следующий:
Output20
21
22
23
24
Аргумент step
функции range()
похож на указание шага при разрезании строк, поскольку его можно использовать для пропуска значений в последовательности.
Со всеми тремя аргументами step
занимает конечную позицию: range(start, stop, step)
. Во-первых, давайте используем step
с положительным значением:
for i in range(0,15,3):
print(i)
В этом случае цикл for
настроен так, что печатаются числа от 0 до 15, но с шагом
, равным 3, так что печатается только каждое третье число. , вот так:
Output0
3
6
9
12
Мы также можем использовать отрицательное значение для нашего аргумента step
для итерации в обратном направлении, но нам придется соответствующим образом настроить наши аргументы start
и stop
:
for i in range(100,0,-10):
print(i)
Здесь 100 — это значение start
, 0 — это значение stop
, а -10
— это диапазон, поэтому цикл начинается со 100 и заканчивается. в 0, уменьшаясь на 10 с каждой итерацией. Это происходит на выходе:
Output100
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)
В этом случае мы распечатываем каждый элемент в списке. Хотя мы использовали переменную shark
, мы могли бы назвать эту переменную любым другим допустимым именем переменной и получить тот же результат:
Outputhammerhead
great white
dogfish
frilled
bullhead
requiem
Приведенный выше вывод показывает, что цикл for
повторяется по списку и печатает каждый элемент из списка в каждой строке.
Списки и другие кортежи, основанные на последовательностях, обычно используются с циклами, потому что они повторяемы. Вы можете комбинировать эти типы данных с range()
для добавления элементов в список, например:
sharks = ['hammerhead', 'great white', 'dogfish', 'frilled', 'bullhead', 'requiem']
for item in range(len(sharks)):
sharks.append('shark')
print(sharks)
Output['hammerhead', 'great white', 'dogfish', 'frilled', 'bullhead', 'requiem', 'shark', 'shark', 'shark', 'shark', 'shark', 'shark']
Здесь мы добавили строку-заполнитель shark
для каждого элемента длины списка sharks
.
Вы также можете использовать цикл for
для создания списка с нуля:
integers = []
for i in range(10):
integers.append(i)
print(integers)
В этом примере список integers
инициализируется пустым, но цикл for
заполняет список следующим образом:
Output[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Точно так же мы можем перебирать строки:
sammy = 'Sammy'
for letter in sammy:
print(letter)
OutputS
a
m
m
y
Итерация по кортежам выполняется в том же формате, что и итерация по спискам или строкам выше.
При переборе словаря важно помнить о структуре ключ: значение, чтобы убедиться, что вы вызываете правильный элемент словаря. Вот пример, который вызывает как ключ, так и значение:
sammy_shark = {'name': 'Sammy', 'animal': 'shark', 'color': 'blue', 'location': 'ocean'}
for key in sammy_shark:
print(key + ': ' + sammy_shark[key])
Outputname: Sammy
animal: shark
location: ocean
color: blue
При использовании словарей с циклами for
итерирующая переменная соответствует ключам словаря, а dictionary_variable[iterating_variable]
— значениям. В приведенном выше случае итерирующая переменная key
использовалась для обозначения ключа, а sammy_shark[key]
— для обозначения значений.
Циклы часто используются для итерации и управления последовательными типами данных.
Вложенные циклы
Циклы могут быть вложены в 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]
Сначала программа сталкивается с внешним циклом, выполняя свою первую итерацию. Эта первая итерация запускает внутренний вложенный цикл, который затем выполняется до завершения. Затем программа возвращается к началу внешнего цикла, завершая вторую итерацию и снова запуская вложенный цикл. Опять же, вложенный цикл выполняется до завершения, и программа возвращается к началу внешнего цикла до тех пор, пока последовательность не будет завершена или прерывание или другой оператор не прервут процесс.
Давайте реализуем вложенный цикл for
, чтобы мы могли рассмотреть его поближе. В этом примере внешний цикл будет перебирать список целых чисел с именем 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)
Когда мы запустим эту программу, мы получим следующий вывод:
Output1
a
b
c
2
a
b
c
3
a
b
c
Вывод показывает, что программа завершает первую итерацию внешнего цикла, печатая 1
, который затем запускает завершение внутреннего цикла, печатая a
, b
, c
последовательно. После завершения внутреннего цикла программа возвращается к началу внешнего цикла, выводит 2
, затем снова выводит весь внутренний цикл (a
, b
, c
) и т. д.
Вложенные циклы for
могут быть полезны для перебора элементов в списках, состоящих из списков. В списке, состоящем из списков, если мы используем только один цикл 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)
Output['hammerhead', 'great white', 'dogfish']
[0, 1, 2]
[9.9, 8.8, 7.7]
Чтобы получить доступ к каждому отдельному элементу внутренних списков, мы реализуем вложенный цикл for
:
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)
Outputhammerhead
great white
dogfish
0
1
2
9.9
8.8
7.7
Когда мы используем вложенный цикл for
, мы можем перебирать отдельные элементы, содержащиеся в списках.
Мы можем увидеть вложенные циклы for
, работающие в работающей программе, в нашем руководстве по набору инструментов обработки естественного языка (NLTK).
Заключение
В этом руководстве было показано, как циклы for
работают в Python и как их создавать. Циклы for продолжают перебирать блок кода определенное количество раз.
Отсюда вы можете продолжить изучение циклов, прочитав руководства по операторам break, continue и pass.
Чтобы работать с циклами for
в проектах, следуйте следующим руководствам: