Как построить для циклов в Python 3

Использование циклов в компьютерном программировании позволяет нам автоматизировать и повторять подобные задачи несколько раз. В этом руководстве мы рассмотримfor loop Python.

Циклfor реализует повторное выполнение кода на основе счетчика цикла или переменной цикла. Это означает, что циклыfor используются чаще всего, когда количество итераций известно до входа в цикл, в отличие отwhile loops, которые основаны на условных условиях.

Для петель

В Python циклыfor построены так:

for [iterating variable] in [sequence]:
    [do something]

То, что делается, будет выполняться до тех пор, пока последовательность не закончится.

Давайте посмотрим на циклfor, который выполняет итерацию по диапазону значений:

for i in range(0,5):
   print(i)

Когда мы запускаем эту программу, вывод выглядит так:

Output0
1
2
3
4

Этот циклfor устанавливаетi в качестве переменной итерации, и последовательность существует в диапазоне от 0 до 5.

Затем в цикле мы выводим одно целое число на каждую итерацию цикла. Имейте в виду, что в программировании мы склонны начинать с индекса 0, поэтому, хотя 5 чисел и выводятся на печать, они варьируются от 0 до 4.

Вы обычно видите и используете циклыfor, когда программе нужно повторить блок кода несколько раз.

Для циклов с использованием range ()

Один из встроенных в Python неизменяемых типов последовательностей -range(). В циклахrange() используется для управления тем, сколько раз цикл будет повторяться.

При работе сrange() вы можете передать ему от 1 до 3 целочисленных аргументов:

  • start указывает целочисленное значение, с которого начинается последовательность, если оно не включено, тоstart начинается с 0

  • stop всегда требуется и является целым числом, которое подсчитывается, но не включается

  • 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() аналогичен аргументуspecifying stride while slicing strings тем, что его можно использовать для пропуска значений в последовательности.

Со всеми тремя аргументамиstep занимает последнюю позицию:range(start, stop, step). Во-первых, давайте использоватьstep с положительным значением:

for i in range(0,15,3):
   print(i)

В этом случае циклfor настроен так, что числа от 0 до 15 распечатываются, но приstep равном 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() в качестве параметров для итерации.

Для циклов с использованием последовательных типов данных

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

Мы назначим список переменной, а затем пройдемся по списку:

sharks = ['hammerhead', 'great white', 'dogfish', 'frilled', 'bullhead', 'requiem']

for shark in sharks:
   print(shark)

В этом случае мы распечатываем каждый элемент в списке. Хотя мы использовали переменнуюshark, мы могли бы назвать эту переменную любым другимvalid variable name, и мы получили бы тот же результат:

Outputhammerhead
great white
dogfish
frilled
bullhead
requiem

Приведенный выше вывод показывает, что циклfor прошел по списку и распечатал каждый элемент из списка в каждой строке.

Списки и другиеdata types, основанные на последовательностях, такие какstrings иtuples, обычно используются с циклами, поскольку они итерируемы. Вы можете комбинировать эти типы данных с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

Итерация черезtuples выполняется в том же формате, что и итерация по спискам или строкам выше.

При итерацииdictionary важно помнить о структуре ключ: значение, чтобы гарантировать, что вы вызываете правильный элемент словаря. Вот пример, который вызывает и ключ, и значение:

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, как и в других языках программирования.

Вложенный цикл - это цикл, который происходит внутри другого цикла, структурно подобныйnested if statements. Они построены так:

for [first iterating variable] in [outer loop]: # Outer loop
    [do something]  # Optional
    for [second iterating variable] in [nested loop]:   # Nested loop
        [do something]

Программа сначала встречает внешний цикл, выполняя свою первую итерацию. Эта первая итерация запускает внутренний вложенный цикл, который затем выполняется до конца. Затем программа возвращается обратно к вершине внешнего цикла, завершая вторую итерацию и снова вызывая вложенный цикл. И снова вложенный цикл выполняется до завершения, и программа возвращается к началу внешнего цикла до тех пор, пока последовательность не будет завершена илиbreak или другой оператор не прервет процесс.

Давайте реализуем вложенный цикл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) s) и т. д.

Вложенные циклы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, которые используются в рабочей программе в нашем руководстве поNatural Language Processing Toolkit (NLTK).

Заключение

В этом руководстве было рассмотрено, как циклыfor работают в Python и как их создавать. For loops продолжает цикл кода, предоставленный определенное количество раз.

Отсюда вы можете продолжить изучение циклов, прочитав руководства поwhile loops иbreak, continue, and pass statements.

Чтобы работать с цикламиfor в проектах, следуйте следующим руководствам: