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

Вложенные циклы Python Изучение

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

Вложенные циклы 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:
    print(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
        print(i, "*", j, "=", i*j)
    # Printing inside the outer loop
    print()

Выход:

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
    print("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
        print(item, list2[i])
        # Incrementing the value of i
        i = i+1
    # Printing outside inner loop
    print("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
      print(i, "*", j, "=", i*j)
    # Printing inside the outer loop
    print()

Выход:

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
      print(i, "*", j, "=", i*j)
    # Printing inside the outer loop
    print()

Выход:

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
print(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)

Читайте также:  Как создать эффективное мобильное приложение
Оцените статью
bestprogrammer.ru
Добавить комментарий