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

Добро пожаловать в другую главу учебного курса по Python - Nested Loops. Отличный способ создания циклов, вложенные циклы доказали свою ценность на любом языке программирования. Сегодня мы сконцентрируемся на Python - на типах, синтаксисе и примерах. Итак, начнем.

Вложенные циклы

Было бы неплохо кратко коснуться Nested Loops в целом, прежде чем переходить к Python специально. Если цикл существует внутри тела другого цикла, он называется «Вложенный цикл». Это означает, что мы хотим выполнить код внутреннего цикла несколько раз. Внешний цикл контролирует, сколько итераций пройдёт внутренний цикл. Базовый пример вложенного цикла for:

for (i=0; i<10; i++)
(
for (j=0; j<10; j++)
(
//This code will execute 100 times.
)
//This code will execute 10 times.
)

Здесь следует отметить, что цикл любого типа может быть вложен в другой цикл. Например, цикл while может быть вложен в цикл for или наоборот.

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

1) Вложено для цикла Синтаксис

Основной синтаксис вложенного цикла for в Python:

for (iterating_variable_1) in (sequence_1): #Outer Loop
for (iterating_variable_2) in (iterating_variable_1/sequence_2): #Inner Loop
(code to execute)

пример

for i in range(11): #line 1
for j in range(i): #line 2
print('*', end='') #line 3
print('') #line 4

Выход:

Выполнение потока

Попробуем понять ход выполнения вышеуказанной программы. В программе мы использовали две итерационные переменные i и j, чтобы напечатать узор звезд.

Компилятор начинается со строки 1. Он встречает цикл for и функцию диапазона. Функция диапазона в Python выводит итеративный массив целых чисел от 0 до числа, указанного в аргументе. Номер аргумента исключен из массива. В нашем случае он сгенерирует массив (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10). Теперь компилятор знает, что он должен выполнить следующий набор операторов 10 раз.

Когда он перемещается в строку 2, он встречает другую функцию цикла и диапазона. Обратите внимание, что аргумент этой функции диапазона является вычисленным значением нашей итерационной переменной i. Таким образом, он динамически генерирует массив в зависимости от значения i. Когда я = 0, массив пуст. Когда i = 1, массив равен (0). Когда я = 2, массив (0, 1) и так далее.

Итак, количество раз, когда строка 3 выполняется напрямую, зависит от значения i. Обратите внимание на часть end = '' inline 3. Это сделано для того, чтобы Python не печатал перевод строки после каждой звезды. Нам нужен только перевод строки в конце каждой итерации внешнего цикла. Таким образом, мы явно напечатали перевод строки в строке 4 нашего кода.

Итак, теперь давайте внимательно рассмотрим каждую итерацию нашего вложенного цикла for.

Итерация внешнего цикла 1

I = 0, j = (), output is a blank line.

Итерация по внешнему циклу 2

I = 1, j = (0), output = *

Итерация внешнего цикла 3

I = 2, j = (0, 1), output = **

Итерация внешнего цикла 4

I = 3, j = (0, 1, 2), output = ***

,
,
,

Итерация внешнего цикла 10

I = 9, j = (0, 1, 2, 3, 4, 5, 6, 7, 8), output = *********

Итерация внешнего цикла 11

I = 10, j = (0, 1, 2, 3, 4, 5, 6, 7, 8, 9), output = **********

2) Вложенный цикл while

Синтаксис

Синтаксис для размещения цикла while в Python:

while (expression_1): #Outer loop
(code to execute) #Optional
while (expression_2): #Inner loop
(code to execute)

В отличие от цикла for, цикл while не имеет предварительно скомпилированной итерируемой последовательности. Цикл while продолжает выполнять код, пока выражение не станет истинным. Поэтому разработчик должен всегда помнить об обновлении итерируемой переменной / выражения, иначе цикл войдет в режим бесконечного выполнения.

пример

i=1 #line 1
while(i<=5): #line 2
j=5 #line 3
while(j>=i): #line 4
print(j, end=' ') #line 5
j-=1 #line 6
i+=1 #line 7
print() #line 8

Выход:

Выполнение потока

Строка 1 кода устанавливает итерационную переменную внешнего цикла в начальное значение. Следующая строка - начало внешнего цикла while. У него есть выражение i <= 5. Это выражение оценивается для истинного значения после каждой итерации. Выполнение входит в цикл, только если условие истинно. Как только условие становится ложным, цикл прерывается.

Поскольку начальное значение I равно 1, условие в строке 2 выполняется. Таким образом, компилятор переходит к строке 3 и устанавливает итерационную переменную j нашего внутреннего цикла в 5. В строке 4 снова есть цикл while с выражением, которое оценивается как true. Таким образом, компилятор выполняет строки 5 и 6. Затем он возвращается к строке 4 и оценивает условие. Если условие истинно, оно снова входит в строки 5 и 6. Если условие становится ложным, цикл завершается, и следующие строки для выполнения - это строки 7 и 8. То же самое следует для внешнего цикла.

Строки 6 и 7 очень важны, поскольку они обновляют нашу итерационную переменную. Без них поток программы входил бы в бесконечный режим выполнения, поскольку выражения цикла while всегда приводили бы к истине.

Должен ли я сломать, продолжить или пройти

Как и почти во всех других языках программирования, в Python также есть концепция прерывания и продолжения. Эти ключевые слова помогают завершить любой цикл или пропустить конкретную итерацию цикла. У Python также есть другое ключевое слово - pass. Давайте посмотрим на это.

1) Перерыв

Ключевое слово break указывает компилятору выпрыгнуть из цикла и прекратить его выполнение.

пример

for i in range(5):
for j in range(5):
if i == j:
break
print(j, end='')
print('')

Выход:

Программа выше прерывает внутренний цикл for, если значения I и j равны. Он не выполняет дальнейшие итерации цикла. Это можно в дальнейшем понять с помощью оператора continue.

2) Продолжить

Ключевое слово continue указывает компилятору пропустить текущую итерацию цикла и продолжить следующую итерацию.

пример

for i in range(5):
for j in range(5):
if i == j:
continue
print(j, end='')
print('')

Выход:

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

3) пройти

Ключевое слово pass интересно в Python. Это просто значит ничего не делать. Он используется, когда блок кода нужен синтаксически, но вы не хотите, чтобы какая-либо команда выполнялась. Это просто действует как заполнитель.

пример

for i in range(5):
for j in range(5):
if i == j:
#I am not sure what to do when i equals j, so for now I will pass.
pass
print(j, end='')
print('')

Выход:

Вывод

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

Рекомендуемые статьи

Это руководство по Python Nested Loops. Здесь мы обсуждаем вложенные циклы Python с синтаксисом, примерами, выходом и потоком выполнения. Вы также можете посмотреть следующую статью, чтобы узнать больше -

  1. Python Frameworks
  2. Как установить Python
  3. Руководство по циклам в Python
  4. Что такое интерфейс Java?
  5. Различные типы петель с их преимуществами
  6. Циклы в VBScript с примерами