Цикл for в Python

Цикл for в Python является функцией итерации. Если у вас есть объект последовательности, такой как список, вы можете использовать цикл for для итерации по элементам, содержащимся в списке.

Функциональность цикла for не слишком отличается от того, что вы видите во многих других языках программирования.

В этой статье мы подробно рассмотрим цикл for в Python и научимся выполнять итерации по различным последовательностям, включая списки, кортежи и многое другое. Кроме того, мы научимся контролировать ход выполнения цикла с помощью выражений break и continue.

Когда использовать цикл for

В любом случае, когда необходимо повторить блок кода фиксированное количество раз. Если вы не знаете, сколько раз его нужно повторить, вместо этого используйте оператор “while loop”.

Синтаксис цикла for в Python

Базовый синтаксис цикла for в Python выглядит примерно так, как указано ниже.

for itarator_variable in sequence_name:
	Statements
	. . .
	Statements

Синтаксис цикла for в Python в подробностях

  • Первое слово оператора начинается с ключевого слова “for”, которое обозначает начало цикла for.
  • Затем у нас есть переменная итератора, которая перебирает последовательность и может использоваться внутри цикла для выполнения различных функций
  • Далее идет ключевое слово “in” в Python, которое говорит переменной итератора перебирать элементы внутри последовательности
  • И, наконец, у нас есть переменная последовательности, которая может быть либо списком, кортежем или любым другим типом итератора.
  • Часть операторов внутри цикла – это место, где вы можете работать с переменной итератора и выполнять различные функции

Строка 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}')

# Вывод
# Сумма чисел равна 10

Вложенные циклы for в Python

Когда у нас есть цикл for внутри другого цикла for, это называется вложенным циклом for. Существует несколько применений вложенного цикла for.

Рассмотрим приведенный выше пример списка. Цикл for выводит отдельные слова из списка. Но что, если мы хотим вывести отдельные символы каждого из слов в списке?

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

words= ["Apple", "Banana", "Car", "Dolphin" ]
for word in words:
        #Этот цикл извлекает слово из списка
        print ("The following lines will print each letters of "+word)
        for letter in word:
                #Этот цикл извлекает букву для слова
                print (letter)
        print("") #Эта команда print используется для печати пустой строки

Вывод

A nested loop is structurally similar to nested if statements

Цикл for в Python с функцией range()

В Python range является одной из встроенных функций. Когда вам нужно, чтобы цикл for выполнялся определенное количество раз, или вам нужно указать диапазон объектов для печати, функция range работает очень хорошо.

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

  • start указывает целочисленное значение, с которого начинается последовательность, если это не указано, то start начинается с 0
  • stop всегда требуется и является целым числом, которое учитывается, но не включается
  • step устанавливает, на сколько увеличивать (или уменьшать в случае отрицательных чисел) следующую итерацию, если это опущено, то step по умолчанию равен 1

Рассмотрим следующий пример, где я хочу напечатать числа 1, 2 и 3:

for x in range(3):
    print("Printing:", x)
	
# Вывод

# Печать: 0
# Печать: 1
# Печать: 2

Функция range также принимает еще один параметр помимо начала и конца. Это параметр шага. Он указывает функции range, сколько чисел пропускать между каждым подсчетом.

В приведенном ниже примере я использовал число 3 в качестве шага, и вы можете видеть, что выводимые числа представляют собой предыдущее число + 3.

for n in range(1, 10, 3):
    print("Printing with step:", n)
	
# Вывод

# Печать с шагом: 1
# Печать с шагом: 4
# Печать с шагом: 7

Мы также можем использовать отрицательное значение для аргумента step, чтобы итерироваться в обратном порядке, но мы должны соответствующим образом настроить аргументы start и stop:

for i in range(100,0,-10):
   print(i)

Здесь 100 – это значение start, 0 – значение stop, а -10 – это диапазон, поэтому цикл начинается с 100 и заканчивается на 0, уменьшаясь на 10 с каждой итерацией. Это отображается в выводе:

Output
100 90 80 70 60 50 40 30 20 10

При программировании на Python циклы for часто используют тип последовательности range() в качестве параметров для итерации.

Оператор прерывания с циклом for

Оператор break используется для преждевременного выхода из цикла for. Он используется для прерывания цикла for, когда достигается определенное условие.

Допустим, у нас есть список чисел, и мы хотим проверить, присутствует ли число или нет. Мы можем перебрать список чисел, и если число найдено, выйти из цикла, потому что нам не нужно продолжать перебирать оставшиеся элементы.

В этом случае мы будем использовать условие if else Python вместе с нашим циклом 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}')

# Вывод
# Список содержит 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}')

Цикл for в Python с блоком 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}')


# это выведет сумму
print_sum_even_nums([2, 4, 6, 8])

# это не выведет сумму из-за наличия нечетного числа в последовательности
print_sum_even_nums([2, 4, 5, 8])

# Вывод

# Цикл for выполнен нормально
# Сумма чисел 20

Циклы for с использованием последовательных типов данных

Списки и другие типы последовательностей данных также могут быть использованы в качестве параметров итерации в циклах 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 перебрал список и распечатал каждый элемент списка по одному на строку.

Списки и другие типы данных, основанные на последовательностях, такие как строки и кортежи, часто используются с циклами, потому что они являются итерируемыми. Вы можете объединить эти типы данных с 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)
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 очень похож на циклы в других языках программирования. Мы можем использовать инструкции break и continue с циклом for для изменения выполнения. Однако в Python у нас также может быть необязательный блок else в цикле for.

I hope you have gained some interesting ideas from the tutorial above. If you have any questions, let us know in the comments below.

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

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

Source:
https://www.digitalocean.com/community/tutorials/how-to-construct-for-loops-in-python-3