В языке программирования Python есть два типа циклов: цикл for и цикл while. Используя эти циклы, мы можем создавать в Python вложенные циклы. Вложенные циклы означают циклы внутри цикла. Например, цикл while внутри цикла for, цикл for внутри цикла for и т. д.
- Вложенные циклы Python
- Пример 1: базовый пример вложенных циклов Python
- Пример 2: Печать таблицы умножения с использованием вложенных циклов for в Python
- Пример 3: Печать с использованием разных внутренних и внешних вложенных циклов
- Использование оператора break во вложенных циклах
- Использование оператора continue во вложенных циклах
- Однострочные вложенные циклы с использованием list comprehension
Вложенные циклы Python
Синтаксис вложенных циклов Python:
Outer_loop Expression:
Inner_loop Expression:
Statement inside inner_loop
Statement inside Outer_loop
Пример 1: базовый пример вложенных циклов Python
Python3
x
=
[
1
,
2
]
y
=
[
4
,
5
]
for
i
in
x:
for
j
in
y:
(i, j)
Выход:
1 4 1 5 2 4 2 5
Time Complexity: O(n2)
Auxiliary Space: O(1)
Пример 2: Печать таблицы умножения с использованием вложенных циклов for в Python
Python3
# Running outer loop from 2 to 3
for
i
in
range
(
2
,
4
):
# Printing inside the outer loop
# Running inner loop from 1 to 10
for
j
in
range
(
1
,
11
):
# Printing inside the inner loop
(i,
"*"
, j,
"="
, i
*
j)
# Printing inside the outer loop
()
Выход:
2 * 1 = 2 2 * 2 = 4 2 * 3 = 6 2 * 4 = 8 2 * 5 = 10 2 * 6 = 12 2 * 7 = 14 2 * 8 = 16 2 * 9 = 18 2 * 10 = 20 3 * 1 = 3 3 * 2 = 6 3 * 3 = 9 3 * 4 = 12 3 * 5 = 15 3 * 6 = 18 3 * 7 = 21 3 * 8 = 24 3 * 9 = 27 3 * 10 = 30
Time Complexity: O(n2)
Auxiliary Space: O(1)
В приведенном выше примере мы берем внешний цикл for, работающий от 2 до 3, для таблицы умножения 2 и 3, а затем внутри этого цикла мы берем внутренний цикл for, который будет выполняться от 1 до 10, внутри которого мы печатаем умножение. table путем умножения каждого значения итерации внутреннего цикла на значение итерации внешнего цикла, как мы видим в приведенном ниже выводе.
Пример 3: Печать с использованием разных внутренних и внешних вложенных циклов
Python3
# Initialize list1 and list2
# with some strings
list1
=
[
'I am '
,
'You are '
]
list2
=
[
'healthy'
,
'fine'
,
'geek'
]
# Store length of list2 in list2_size
list2_size
=
len
(list2)
# Running outer for loop to
# iterate through a list1.
for
item
in
list1:
# Printing outside inner loop
(
"start outer for loop "
)
# Initialize counter i with 0
i
=
0
# Running inner While loop to
# iterate through a list2.
while
(i < list2_size):
# Printing inside inner loop
(item, list2[i])
# Incrementing the value of i
i
=
i
+
1
# Printing outside inner loop
(
"end for loop "
)
Выход:
start outer for loop I am healthy I am fine I am geek end for loop start outer for loop You are healthy You are fine You are geek end for loop
Time Complexity: O(n2)
Auxiliary Space: O(1)
В этом примере мы инициализируем два списка некоторыми строками. Сохраните размер list2 в ’list2_Size’, используя функцию len() и используя ее в цикле while в качестве счетчика. После этого запустите внешний цикл for для перебора list1, а внутри этого цикла запустите внутренний цикл while для перебора list2 с использованием индексации списка внутри, в котором мы печатаем каждое значение list2 для каждого значения list1.
Использование оператора break во вложенных циклах
Это тип оператора управления циклом. В цикле мы можем использовать оператор break для выхода из цикла. Когда мы используем оператор break в цикле, он пропускает оставшуюся часть итерации и завершает цикл. давайте разберемся на примере.
Python3
# Running outer loop from 2 to 3
for
i
in
range
(
2
,
4
):
# Printing inside the outer loop
# Running inner loop from 1 to 10
for
j
in
range
(
1
,
11
):
if
i
=
=
j:
break
# Printing inside the inner loop
(i,
"*"
, j,
"="
, i
*
j)
# Printing inside the outer loop
()
Выход:
2 * 1 = 2 3 * 1 = 3 3 * 2 = 6
Time Complexity: O(n2)
Auxiliary Space: O(1)
Приведенный выше код такой же, как и в примере 2. В этом коде мы используем оператор break внутри внутреннего цикла с помощью оператора if. Внутри внутреннего цикла, если «i» становится равным «j», тогда внутренний цикл будет завершен и не выполнен, остальная часть итерации, как мы видим в выходной таблице 3, печатается до двух итераций, потому что в следующей итерации «i» становится равным «j», и цикл прерывается.
Использование оператора continue во вложенных циклах
Оператор continue также является оператором управления циклом. Это прямо противоположно оператору break. Оператор continue заставляет цикл перейти к следующей итерации цикла, тогда как оператор break прерывает цикл. Давайте разберемся с этим, используя код.
Python3
# Running outer loop from 2 to 3
for
i
in
range
(
2
,
4
):
# Printing inside the outer loop
# Running inner loop from 1 to 10
for
j
in
range
(
1
,
11
):
if
i
=
=
j:
continue
# Printing inside the inner loop
(i,
"*"
, j,
"="
, i
*
j)
# Printing inside the outer loop
()
Выход:
2 * 1 = 2 2 * 3 = 6 2 * 4 = 8 2 * 5 = 10 2 * 6 = 12 2 * 7 = 14 2 * 8 = 16 2 * 9 = 18 2 * 10 = 20 3 * 1 = 3 3 * 2 = 6 3 * 4 = 12 3 * 5 = 15 3 * 6 = 18 3 * 7 = 21 3 * 8 = 24 3 * 9 = 27 3 * 10 = 30
Time Complexity: O(n2)
Auxiliary Space: O(1)
В приведенном выше коде вместо оператора break мы используем оператор continue. Здесь, когда «i» становится равным «j» во внутреннем цикле, он пропускает остальную часть кода во внутреннем цикле и переходит к следующей итерации, как мы видим в выводе «2 * 2 = 4» и «3 * 3 = 9» не печатается, потому что в этот момент ‘i’ становится равным ‘j’.
Однострочные вложенные циклы с использованием list comprehension
Чтобы преобразовать многострочные вложенные циклы в одну строку, мы собираемся использовать генератор списков в Python. Понимание списка включает в себя скобки, состоящие из выражения, которое выполняется для каждого элемента, и цикла for для перебора каждого элемента в списке.
Синтаксис list comprehension:
newList = [ expression(element) for element in oldList if condition ]
Код:
Python3
# Using list comprehension to make
# nested loop statement in single line.
list1
=
[[j
for
j
in
range
(
3
)]
for
i
in
range
(
5
)]
# Printing list1
(list1
Выход:
[[0, 1, 2], [0, 1, 2], [0, 1, 2], [0, 1, 2], [0, 1, 2]]
В приведенном выше коде мы сохраняем список внутри списка, используя понимание списка во внутреннем цикле понимания списка [j для j в диапазоне (3)], чтобы создать список [0, 1, 2] для каждой итерации внешнего цикл «для i в диапазоне (5)».
Time Complexity: O(n2)
Auxiliary Space: O(n)