Введение
Цикл for в Python — рекурсивная функция. Если у вас есть объект последовательности, например, список, вы можете использовать цикл for для перебора элементов списка. Функциональность цикла for мало чем отличается от функциональности цикла в других языках программирования. В этой статье мы подробно рассмотрим цикл for в Python и научимся перебирать различные последовательности, включая списки, кортежи и многое другое. Кроме того, мы научимся управлять выполнением цикла с помощью операторов break и continue.
Когда использовать цикл for
Всякий раз, когда вам нужно повторить блок кода несколько раз, используйте оператор “цикл while”, если вы не знаете, сколько раз его следует повторить.
Синтаксис цикла for
Базовый синтаксис цикла for в Python выглядит примерно так, как показано ниже.
for itarator_variable in sequence_name:
Statements
. . .
Statements
Подробный синтаксис цикла Python for
- Первое слово оператора начинается с ключевого слова “for”, что означает начало цикла for.
- Затем у нас есть переменная-итератор, которая перебирает последовательность и может использоваться внутри цикла для выполнения различных функций.
- Следующее — это ключевое слово “in” в Python, которое сообщает переменной-итератору о необходимости циклического перебора элементов внутри последовательности.
- И наконец, у нас есть переменная последовательности, которая может быть списком, кортежем или любым другим типом итератора.
- В разделе операторов цикла вы можете работать с переменной итератора и выполнять различные функции.
Вывести отдельные буквы строки, используя цикл for
Строка в Python — это последовательность символов. Если в какой-либо программе вам нужно перебрать все символы строки по отдельности, вы можете использовать цикл for.
Вот как это можно сделать.
word="anaconda"
for letter in word:
print (letter)
a
n
a
c
o
n
d
aПричина, по которой этот цикл работает, заключается в том, что Python рассматривает “строку” как последовательность символов, а не рассматривает строку как единое целое.
Использование цикла for для перебора списка или кортежа Python
Списки и кортежи — это итерируемые объекты. Давайте посмотрим, как можно перебрать элементы внутри этих объектов.
words= ["Apple", "Banana", "Car", "Dolphin" ]
for word in words:
print (word)Выход:
Apple
Banana
Car
DolphinТеперь давайте продолжим и поработаем над элементами кортежа.
nums = (1, 2, 3, 4)
sum_nums = 0
for num in nums:
sum_nums = sum_nums + num
print(f'Sum of numbers is {sum_nums}')
# Output
# Sum of numbers is 10Вложенные циклы for в Python
Когда один цикл for находится внутри другого цикла for, это называется вложенным циклом for. Существует множество применений вложенного цикла for. Рассмотрим пример списка выше. Цикл for выводит отдельные слова из списка. Но что, если вместо этого мы хотим вывести отдельные символы каждого слова в списке?
В этом случае лучше всего работает вложенный цикл for. Первый цикл (родительский) перебирает слова по одному. Второй цикл (дочерний) перебирает символы в каждом слове.
words= ["Apple", "Banana", "Car", "Dolphin" ]
for word in words:
#This loop is fetching word from the list
print ("The following lines will print each letters of "+word)
for letter in word:
#This loop is fetching letter for the word
print (letter)
print("") #This print is used to print a blank lineВыход:
Вложенный цикл структурно похож на вложенные операторы if.
Цикл For с функцией range()
Функция range() в Python — одна из встроенных. Она отлично подходит, когда нужно, чтобы цикл for выполнялся определённое количество раз, или нужно указать диапазон объектов для вывода.
При работе с range() вы можете передать ему от 1 до 3 целочисленных аргументов:
начинатьУказывает целочисленное значение, с которого начинается последовательность. Если оно не указано, последовательность начинается с 0.Останавливатьсявсегда требуется и представляет собой целое число, которое учитывается до, но не включаяшагОпределяет величину приращения (или уменьшения в случае отрицательных чисел) следующей итерации; если этот параметр пропущен, шаг по умолчанию равен 1.
Рассмотрим следующий пример, где я хочу напечатать числа 1, 2 и 3:
for x in range(3):
print("Printing:", x)
# Output
# Printing: 0
# Printing: 1
# Printing: 2Функция диапазона также принимает ещё один параметр, помимо начального и конечного. Этот параметр — шаг. Он указывает функции диапазона, сколько чисел нужно пропустить между каждым отсчётом.
В примере ниже я использовал число 3 в качестве шага, и вы можете видеть, что выходные числа представляют собой предыдущее число + 3.
for n in range(1, 10, 3):
print("Printing with step:", n)
# Output
# Printing with step: 1
# Printing with step: 4
# Printing with step: 7Мы также можем использовать отрицательное значение аргумента шага для итерации в обратном направлении, но для этого нам нужно соответствующим образом скорректировать аргументы начала и окончания:
for i in range(100,0,-10):
print(i)Здесь 100 — начальное значение, 0 — конечное значение, а -10 — диапазон, поэтому цикл начинается со 100 и заканчивается на 0, уменьшаясь на 10 с каждой итерацией. Это происходит в выходных данных:
Output
100
90
80
70
60
50
40
30
20
10При программировании на Python циклы for часто используют тип последовательности range() в качестве параметров для итерации.
Оператор Break с циклом for
Оператор break используется для преждевременного выхода из цикла for. Он прерывает цикл for при выполнении определённого условия. Предположим, у нас есть список чисел, и мы хотим проверить, существует ли число. Мы можем перебрать список чисел, и если число найдено, то можем выйти из цикла, поскольку нет необходимости перебирать оставшиеся элементы.
В этом случае мы будем использовать условие Python if else вместе с нашим циклом for.
nums = [1, 2, 3, 4, 5, 6]
n = 2
found = False
for num in nums:
if n == num:
found = True
break
print(f'List contains {n}: {found}')
# Output
# List contains 2: Trueоператор continue с циклом for
Мы можем использовать операторы continue в цикле for, чтобы пропустить выполнение тела цикла for при определённом условии. Предположим, у нас есть список чисел, и мы хотим вывести сумму положительных чисел. Мы можем использовать операторы continue, чтобы пропустить выполнение цикла for для отрицательных чисел.
nums = [1, 2, -3, 4, -5, 6]
sum_positives = 0
for num in nums:
if num < 0:
continue
sum_positives += num
print(f'Sum of Positive Numbers: {sum_positives}')Цикл Python for с блоком else
Мы можем использовать блок else с циклом for в Python. Блок else выполняется только в том случае, если цикл for не завершается оператором break. Предположим, у нас есть функция, которая выводит сумму чисел только в том случае, если все числа чётные. Если число нечётное, мы можем использовать оператор break для завершения цикла for. Мы можем вывести сумму в блоке else, чтобы она выводилась при нормальном выполнении цикла for.
def print_sum_even_nums(even_nums):
total = 0
for x in even_nums:
if x % 2 != 0:
break
total += x
else:
print("For loop executed normally")
print(f'Sum of numbers {total}')
# this will print the sum
print_sum_even_nums([2, 4, 6, 8])
# this won't print the sum because of an odd number in the sequence
print_sum_even_nums([2, 4, 5, 8])
# Output
# For loop executed normally
# Sum of numbers 20Циклы с использованием последовательных типов данных
Списки и другие типы последовательностей данных также можно использовать в качестве параметров итерации в циклах for. Вместо итерации по range() можно определить список и перебирать его элементы. Мы присваиваем список переменной, а затем перебираем его:
sharks = ['hammerhead', 'great white', 'dogfish', 'frilled', 'bullhead', 'requiem']
for shark in sharks:
print(shark)В этом случае мы выводим каждый элемент списка. Хотя мы использовали переменную shark, мы могли бы назвать её любым другим допустимым именем и получить тот же результат:
Output
hammerhead
great white
dogfish
frilled
bullhead
requiemВывод выше показывает, что цикл for проходит по списку, выводя каждый элемент списка на каждой строке. Списки и другие типы данных, основанные на последовательностях, такие как строки и кортежи, обычно используются в циклах 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']Здесь для каждого элемента списка акул мы добавили строку-заполнитель «акула». Вы также можете использовать цикл for для создания списка с нуля:
integers = []
for i in range(10):
integers.append(i)
print(integers)В этом примере целые числа инициализируются пустым списком, но цикл for заполняет список следующим образом:
Output
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]Аналогично мы можем перебирать строки:
sammy = 'Sammy'
for letter in sammy:
print(letter)Output
S
a
m
m
yИтерация по кортежам выполняется в том же формате, что и итерация по спискам или строкам, описанным выше. При итерации по словарю важно учитывать структуру ключ:значение, чтобы гарантировать вызов нужного элемента словаря. Вот пример, в котором вызываются и ключ, и значение:
sammy_shark = {'name': 'Sammy', 'animal': 'shark', 'color': 'blue', 'location': 'ocean'}
for key in sammy_shark:
print(key + ': ' + sammy_shark[key])Output name: Sammy animal: shark location: ocean color: blue
При использовании словаря с циклами for итерирующая переменная соответствует ключам словаря, а dictionary_variable[iterating_variable] — значениям. В приведенном выше случае итерирующая переменная key использовалась для представления ключа, а sammy_shark[key] — для представления значений. Циклы часто используются для итерации и манипулирования последовательными типами данных.
Результат
Цикл for в Python очень похож на цикл for в других языках программирования. Для изменения выполнения в цикле for можно использовать операторы break и continue. Однако в Python также можно опционально блокировать другой цикл.










