Вложенные циклы Python
В языке программирования 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
for
i
in
range
(
2
,
4
):
for
j
in
range
(
1
,
11
):
(i,
"*"
, j,
"="
, i
*
j)
()
Выход:
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
list1
=
[
'I am '
,
'You are '
]
list2
=
[
'healthy'
,
'fine'
,
'geek'
]
list2_size
=
len
(list2)
for
item
in
list1:
(
"start outer for loop "
)
i =
0
while
(i < list2_size):
(item, list2[i])
i
=
i
+
1
(
"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
for
i
in
range
(
2
,
4
):
for
j
in
range
(
1
,
11
):
if
i
=
=
j:
break
(i,
"*"
, j,
"="
, i
*
j)
()
Выход:
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
for
i
in
range
(
2
,
4
):
for
j
in
range
(
1
,
11
):
if
i
=
=
j:
continue
(i,
"*"
, j,
"="
, i
*
j)
()
Выход:
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
list1
=
[[j
for
j
in
range
(
3
)]
for
i
in
range
(
5
)]
(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)
Цикл for в Python: тонкости написания
Цикл for — одна из базовых управляющих конструкций в любом языке программирования. Простейший цикл в языке Си выглядит так:
int i; for (i=0;i<N;i++) { // действия }
В Си нет более элегантного способа написать цикл for. В более сложных сценариях мы обычно прибегаем к вложенным циклам и множеству вспомогательных переменных (например, i
в примере выше).
К счастью, в Python все намного удобнее. У этого языка есть возможности, позволяющие писать лаконичные циклы — это очень упрощает нашу жизнь. В Python можно избежать вложенных циклов, а вспомогательные переменные объявлять вовсе не обязательно. А еще мы сами можем настроить цикл
!
В этой статье мы расскажем вам о тонкостях написания цикла for
. Надеемся, вы прочувствуете всю красоту Python.
Выводим индекс и значение одновременно
Обыденный сценарий: мы работаем со списком и нам нужно вывести и индексы, и соответствующие значения. Когда я только начал изучать Python, мой код выглядел примерно так:
for i in range(len(my_list)): print(i, my_list[i])
Да, это работает. Но это недостаточно «питонично». Через несколько месяцев изучения Python я решал эту задачу так:
for i, v in enumerate(my_list): print(i, v)
Как видите, встроенная функция enumerate значительно упрощает нашу жизнь.
Избавляемся от вложенных циклов с помощью функции product
Вложенные циклы — настоящая головная боль. Они усложняют не только сам код, но и его читаемость. Выход из этих циклов — задача тоже сложная. Чтобы найти ошибку, приходится приложить много усилий, ведь нужно проверить каждый внутренний цикл.
К счастью, существует очень полезная встроенная функция — product
. Она является частью встроенного модуля Python — itertools
. С ее помощью мы можем избавиться от вложенных циклов.
Рассмотрим пример:
list_a = [1, 2020, 70] list_b = [2, 4, 7, 2000] list_c = [3, 70, 7] for a in list_a: for b in list_b: for c in list_c: if a + b + c == 2077: print(a, b, c) # 70 2000 7
Объявлено три списка чисел. Нам нужно вывести три числа (по одному из каждого списка), сумма которых равна 2077. Чтобы решить эту задачу, нам понадобилось три вложенных цикла. Код выглядит совсем не изящно.
А теперь опробуем функцию product
.
from itertools import product list_a = [1, 2020, 70] list_b = [2, 4, 7, 2000] list_c = [3, 70, 7] for a, b, c in product(list_a, list_b, list_c): if a + b + c == 2077: print(a, b, c) # 70 2000 7
Как видите, с помощью функции product количество циклов сокращается до одного.
Функция product
возвращает декартово произведение входных итераторов. Благодаря этому мы можем избежать написания вложенных циклов во многих сценариях.
Используем модуль Itertools для написания невероятных циклов
Функция product
— лишь вершина айсберга. Изучение модуля itertools
сравнимо с открытием нового мира. В нем содержится множество полезных методов, которые могут упростить любой цикл. Полный список вы можете найти в официальной документации.
Рассмотрим несколько примеров.
Создаем бесконечный цикл
В модуле itertools
есть как минимум три метода для создания бесконечных циклов:
1. Функция count
.
natural_num = itertools.count(1) for n in natural_num: print(n) # 1,2,3,...
2. Функция cycle
.
import itertools many_yang = itertools.cycle('Hello') for y in many_yang: print(y) # 'H','e','l','l','o','H','e','l',...
3. Функция repeat
.
many_yang = itertools. repeat('Hello') for y in many_yang: print(y) # 'Hello','Hello',...
Объединяем несколько итераторов в один
Функция chain()
помогает нам объединять несколько итераторов в один.
from itertools import chain list_a = [1, 22] list_b = [7, 20] list_c = [3, 70] for i in chain(list_a, list_b, list_c): print(i) # 1,22,7,20,3,70
Выводим повторяющиеся элементы и количество их повторений
Функция groupby()
позволяет получить повторяющиеся элементы в итераторе и сгруппировать их.
from itertools import groupby for key, group in groupby('Pyttthhhonissst'): print(key, list(group)) # P ['P'] # y ['y'] # t ['t', 't', 't'] # h ['h', 'h', 'h'] # o ['o'] # n ['n'] # i ['i'] # s ['s', 's', 's'] # t ['t']
Как видите, дублирующиеся буквы сгруппированы. Более того, мы можем расширить функционал groupby()
. Например, указать, что нужно игнорировать регистр:
from itertools import groupby for key, group in groupby('PyYyYTTthHOoOnisst', lambda x: x.upper()): print(key, list(group)) # P ['P'] # Y ['y', 'Y', 'y', 'Y'] # T ['T', 'T', 't'] # H ['h', 'H'] # O ['O', 'o', 'O'] # N ['n'] # I ['i'] # S ['s', 's'] # T ['t']
Самостоятельно настраиваем цикл for
После ознакомления с примерами пора наконец разобраться, почему же циклы в Python такие гибкие и изящные. Этими своими свойствами они обязаны тому, что к итератору в цикле for
можно применять функции. Во всех примерах, приведенных выше, к итераторам применялась какая-нибудь функция. Шаблон в целом выглядит так:
for x in function(iterator)
То есть, суть itertools
проста — этот модуль применяет часто используемые функции к итератору. Если вы забыли какую-либо функцию из itertools
— реализуйте ее самостоятельно. Также стоит заметить, что все эти функции — генераторы. Вот почему с их помощью мы можем создавать бесконечные циклы.
Таким образом, написав генератор, вы можете настроить цикл for
так, как вам необходимо.
Рассмотрим простой пример:
def even_only(num): for i in num: if i % 2 == 0: yield i my_list = [1, 9, 3, 4, 2, 5] for n in even_only(my_list): print(n) # 4 # 2
Как видите, мы объявляем генератор — even_only
. Если мы встроим этот генератор в цикл, то итерация будет происходить только по четным элементам списка.
Пример выше — лишь для объяснения принципа работы. Существует множество других способов решения этой задачи — например, генераторы списков.
my_list = [1, 9, 3, 4, 2, 5] for n in (i for i in my_list if not i % 2): print(n) # 4 # 2
Вывод
Циклы в Python могут быть изящны и гибки. Такими их делают встроенные функции и генераторы.
Python для цикла — javatpoint
следующий → ← предыдущая Python — это мощный язык сценариев общего назначения, простой для понимания и реализации. Доступ к нему бесплатный, потому что он с открытым исходным кодом. Это руководство научит нас, как использовать циклы for в Python, одну из самых основных инструкций по созданию циклов в программировании на Python. Введение в цикл for в PythonВ Python цикл for часто используется для перебора итерируемых объектов, таких как списки, кортежи или строки. Обход — это процесс итерации по ряду. Если у нас есть раздел кода, который мы хотели бы повторить определенное количество раз, мы используем циклы for. Цикл for обычно используется для итерируемых объектов, таких как список или встроенная функция диапазона. Оператор for в Python проходит через элементы ряда, каждый раз запуская блок кода. Оператор for противоположен циклу while, который используется всякий раз, когда условие требует проверки при каждом повторении или когда часть кода должна повторяться бесконечно. Синтаксис цикла forдля значения последовательно: {тело цикла} На каждой итерации значением является параметр, который получает значение элемента в итерируемой последовательности. Если оператор выражения присутствует в последовательности, он обрабатывается первым. Затем итерирующая переменная iterating_variable назначается первому элементу последовательности. После этого запускается нужный блок. Блок операторов выполняется до тех пор, пока вся последовательность не будет завершена, и каждый элемент в последовательности размещается в iterating_variable. Материал цикла for отличается от остальной части программы отступом. Пример Python для циклаКод # Код для нахождения суммы квадратов каждого элемента списка с помощью цикла for # создание списка номеров числа = [3, 5, 23, 6, 5, 1, 2, 9, 8] # инициализируем переменную, в которой будет храниться сумма сумма_ = 0 # использование цикла for для перебора списка для числа в цифрах: сумма_ = сумма_ + число ** 2 print(«Сумма квадратов: «, sum_) Вывод: Сумма квадратов: 774 Функция range()Поскольку функция «диапазон» так часто появляется в циклах for, мы можем ошибочно полагать, что диапазон является компонентом синтаксиса цикла for. Это не так: это встроенный метод Python, который предоставляет ряд, следующий заданному шаблону (обычно последовательные целые числа), удовлетворяющий критериям предоставления ряда для выполнения выражения for. Нет необходимости считать, потому что for большую часть времени может действовать прямо на последовательности. Если они исходят из какого-то другого языка с характерным синтаксисом цикла, это частая конструкция новичка: Код мой_список = [3, 5, 6, 8, 4] для iter_var в диапазоне (len(my_list)): my_list.append(my_list[iter_var] + 2) распечатать (мой_список) Вывод: [3, 5, 6, 8, 4, 5, 7, 8, 10, 6] Итерация с использованием индекса последовательностиДругим методом повторения каждого элемента является использование смещения индекса в последовательности. Вот простая иллюстрация: Код # Код для нахождения суммы квадратов каждого элемента списка с помощью цикла for # создание списка номеров числа = [3, 5, 23, 6, 5, 1, 2, 9, 8] # инициализируем переменную, в которой будет храниться сумма сумма_ = 0 # использование цикла for для перебора списка для числа в диапазоне ( len (числа) ): сумма_ = сумма_ + числа[число] ** 2 print(«Сумма квадратов: «, sum_) Вывод: Сумма квадратов: 774 Здесь нам пригодился встроенный метод len(), возвращающий общее количество элементов в списке или кортеже, и встроенная функция range(), возвращающая точную последовательность для повторения. Использование оператора else с циклом forPython позволяет соединить выражение else с выражением цикла. Если предложение else сочетается с циклом for, оно выполняется после того, как схема завершит итерацию по списку. В следующем примере показано, как использовать оператор else в сочетании с выражением for для поиска оценок учащихся в записи. Код # код для печати оценок ученика из ведомости student_name_1 = ‘Итика’ student_name_2 = ‘Паркер’ # Создание словаря записей учеников записи = {‘Итика’: 90, ‘Аршия’: 92, ‘Питер’: 46} оценки защиты (имя_ученика): for a_student в записи: # цикл for будет перебирать ключи словаря если a_student == student_name: вернуть записи[ a_student ] перерыв еще: return f’В записях нет студента с именем {student_name}’ # задаем функции markers() имя двух учеников print(f»Отметки {student_name_1}: «, отметки( student_name_1)) print(f»Отметки {student_name_2}: «, отметки( student_name_2)) Вывод: Знаки Итики: 90 Знаки Паркера: В записях нет учеников с именем Паркер. Вложенные циклыЕсли у нас есть фрагмент скрипта, который мы хотим запустить несколько раз, а затем другой фрагмент внутри этого скрипта, который мы хотим запустить B раз, мы используем «вложенный цикл». При работе с итерируемым объектом в списках они широко используются в Python. Код импортировать случайный числа = [ ] для val в диапазоне (0, 11): числа.добавление(случайное.randint(0, 11)) для числа в диапазоне (0, 11): для я в цифрах: если число == я: напечатать (число, конец = «») Вывод: 0 2 4 5 6 7 8 8 9 10 Следующая темаPython while loop ← предыдущая следующий → |
Python For Loops Примеры с синтаксисом
Стать сертифицированным специалистом
Язык программирования Python с самого начала был на шаг впереди других языков программирования. Циклы в Python имеет аналогичное преимущество, когда дело доходит до программирования на Python . В этой статье мы узнаем о Python For Loop и о том, как мы можем использовать его в программе. В этой статье рассматриваются следующие понятия:
- Что такое Python For Loop?
- Диапазон в Python For Loop
- Python For Loop Break
- Python For Loop In List
- Продолжить в Python For Loop
- Примеры Python For Loop
Благодаря огромному количеству приложений и более простым реализациям Python с наукой о данных значительно увеличилось количество рабочих мест, созданных для науки о данных. каждый год. Запишитесь на сертификационный курс Python Edureka по науке о данных и получите практический опыт работы с отраслевыми проектами в режиме реального времени, а также круглосуточную поддержку 7 дней в неделю, которая поможет вам стать успешным специалистом по данным,
Давайте продолжим и начнем эту статью с базового введения в для цикла в Python.
Что такое Python For Loop?Цикл for используется для перебора последовательностей, таких как список, кортеж, набор и т. д. или. И не только последовательности, но и любой итерируемый объект также можно пройти с помощью цикла for.
Давайте разберемся с циклом for с помощью блок-схемы, показанной ниже.
Выполнение начнется и будет искать первый элемент в последовательности или итерируемый объект. Он проверит, достиг ли он конца последовательности или нет. После выполнения операторов в блоке он будет искать следующий элемент в последовательности, и процесс будет продолжаться до тех пор, пока выполнение не достигнет последнего элемента в последовательности.
Синтаксис цикла for PythonДавайте разберемся с синтаксисом цикла for на примере:
х = (1,2,3,4,5) для я в х: печать (я)
Выход: 1
2
3
4
90 006
5
В приведенном выше примере выполнение началось с первого элемента в кортеже x, и это продолжалось, пока выполнение не достигло 5. Это очень простой пример того, как мы можем использовать цикл for в python. Давайте также посмотрим, как можно использовать функцию диапазона с циклом for.
Диапазон в Python For LoopВ Python диапазон — это встроенная функция, которая возвращает последовательность. Функция диапазона имеет три параметра: начальный параметр, конечный параметр и параметр шага. Конечный параметр не включает объявленное число, давайте разберемся с этим на примере.
а = список (диапазон (0,10,2)) печать (а)
Вывод: [0,2,4,6,8]
В приведенном выше примере последовательность начинается с 0 и заканчивается на 9поскольку конечный параметр равен 10, а шаг равен 2, поэтому во время выполнения он переходит на 2 шага после каждого элемента.
Теперь давайте рассмотрим пример использования цикла python for.
шаблон защиты (n): к = 2 * п - 2 для я в диапазоне (0, n): для j в диапазоне (0, k): печать (конец = "") к = к - 1 для j в диапазоне (0, i+1): распечатать("*", конец=" ") распечатать("р") узор(15)
Выход:
В приведенном выше примере мы смогли создать программу шаблона пирамиды Python, используя функцию диапазона. Мы использовали функцию диапазона, чтобы получить точное количество пробелов и значений звездочки, чтобы получить приведенный выше шаблон.
Давайте посмотрим, как мы можем использовать оператор break в цикле for в Python.
Python для разрыва циклаПрерывание в python — это оператор потока управления, который используется для выхода из выполнения, как только встречается разрыв. Давайте разберемся, как мы можем использовать оператор break в цикле for на примере.
Допустим, у нас есть список со строками в качестве элементов, поэтому мы выйдем из цикла, используя оператор break, как только встретим нужную строку.
компания = ['E','D','U','R','E','K','A'] для x в компании: если х == "R": перерыв печать (х)
Вывод: E
D
U
В приведенном выше примере , как только цикл встречает строку «R», он входит в блок операторов if, где оператор break выходит из цикла. . Точно так же мы можем использовать оператор break в соответствии с условиями задачи.
Теперь давайте посмотрим, как мы можем использовать python для цикла в списках.
Python For Loop In ListСписок в python представляет собой последовательность, как и любой другой тип данных, поэтому совершенно очевидно, как мы можем использовать список. Позвольте мне показать вам пример, где цикл for используется в списке.
цвет = ["синий", "белый"] транспортное средство = ['автомобиль', 'велосипед', 'грузовик'] color_comb = [(x,y) для x в цвете для y в автомобиле] печать (color_comb)
Вывод: [('синий', 'автомобиль'), ('синий', 'велосипед'), ('синий', 'грузовик'), ('белый', 'автомобиль'), ('белый', 'велосипед' ), ('белый', 'грузовик')]
Давайте также посмотрим, как мы можем использовать оператор continue в цикле for в Python.
Продолжить в Python For LoopДавайте разберемся в том же примере, который мы использовали в операторе break, вместо break мы будем использовать оператор continue. Это также оператор управления, но с той лишь разницей, что он пропускает только текущую итерацию и все равно выполняет остальные итерации.
компания = ['E', 'D', 'U', 'R', 'E', 'K', 'A'] для x в компании: если х == "R": продолжать печать (х)
Выход: E
D
U
901 69 E
K
A
В приведенном выше примере оператор continue встретился, когда строковое значение было «R», поэтому выполнение пропустило эту конкретную итерацию и перешло к следующему элементу в списке.
Давайте теперь посмотрим на несколько других примеров, чтобы лучше понять, как мы можем использовать цикл for в Python.
Python For Loop ExamplesВот простая программа for для вывода произведения любых пяти чисел, полученных от пользователя
разрешение = 1 для я в диапазоне (0,5): n = int (ввод («введите число»)) разрешение *= п печать (разрешение)
Результат:
Вот еще одна простая программа для вычисления площади квадратов, стороны которых указаны в виде списка.
сторона = [5,4,7,8,9,3,8,2,6,4] площадь = [x*x для x в стороне] печать(область)
Вывод: [25, 16, 49, 64, 81, 9, 64, 4, 36, 16]
Теперь, когда мы закончили с концепциями цикла for, вот несколько руководств, которые помогут вы изучаете язык программирования структурированным образом.
- Цикл While в Python
- Коллекции в Python
- Классы и объекты Python
- Функции в Python
- Модули Python
- Программы Python для практики
Это подводит нас к концу этой статьи, где мы узнали, как мы можем использовать цикл For в Python. Надеюсь, вы поняли все, о чем вам рассказали в этом уроке.
Если эта статья о «Python For Loop» показалась вам актуальной, ознакомьтесь с Edureka Python Course — надежной онлайн-учебной компанией, сетью которой являются более 250 000 довольных учащихся по всему миру.
Мы здесь, чтобы помочь вам на каждом этапе вашего путешествия и разработать учебный план, предназначенный для студентов и профессионалов, которые хотят стать разработчиками Python.