Вебинары Разобраться в IT Реферальная программа
Программирование Аналитика Дизайн Маркетинг Управление проектами
06 Окт 2023
7 мин
1628

Что такое итерация и как ее применять в программировании

Рассказываем, что такое итерация и нужен ли для нее итератор.

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

Что такое итерация

Итерация — это повторение чего-либо. В математике и бизнесе итерацией называют сам процесс повторения действий до достижения результата.

В разработке программного обеспечения итерация — это этап. Сложный процесс делят на короткие циклы, каждый из них длится от пары дней до нескольких недель. В каждую итерацию разрабатывают определенный функционал.

В программировании термин немного меняет значение. Здесь итерация — один этап повторения. Одно выполнение действия — одна итерация.

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

Итерации есть почти в каждом языке программирования. Время от времени нужно выполнять один и тот же набор инструкций для множества элементов. Основной инструмент, который использует итерации, — цикл.

Цикл указывает программе: «Повтори эти действия десять раз» или «Повторяй, пока не выполнится условие». Это похоже на указание тренера спортсмену бежать 10 кругов по стадиону: итерацией будет один круг.

Допустим, нужно вывести числа в консоль от одного до пяти на языке Python. Для этого понадобится команда print(), а в круглых скобках нужно указать, что именно вывести. Мы можем указать там всего одну переменную — x, последовательно присвоить ей значения от одного до пяти и вывести в консоль.

for x in range(1, 6):
print(x)


Для последовательного прохода здесь используется цикл for. Он повторяет действие print(x) пять раз. Каждое выполнение действия print(x) — это одна итерация.

Что означает итерируемый объект

Итерируемый объект — это элемент программирования, по которому можно последовательно пройтись с помощью цикла.

В итерируемом объекте всегда несколько элементов. К ним относятся списки (массивы), строки и словари, коллекции. Цикл может обработать каждый элемент этих объектов, и потому позволяет программистам изменять, проверять и выполнять другие операции с большими объемами данных.

Рассмотрим на примере.

В Python самая простая коллекция называется списком, в котором могут содержаться любые элементы. Все вместе они помещены в [квадратные скобки] и разделены «кавычками» и запятыми.

names = [«alice», «bob», «charlie», «diana», «eve»]

В этом списке пять имен. Но есть небольшая проблема: все они написаны со строчной буквы. А нужно, чтобы в списке имена были написаны правильно: с прописной.

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

for name in names:

В каждой итерации цикл будет применять к name метод capitalize(). Это встроенный метод строк в Python, который преобразует первую букву строки в заглавную, а остальные буквы делает строчными, если они написаны в верхнем регистре. Результат этой операции мы будем сохранять в переменной capitalized_name.

capitalized_name = name.capitalize()

А чтобы сохранить результаты операции над каждым именем, нужно сохранить значение переменной capitalized_name на каждой итерации в новый список.

capitalized_names.append(capitalized_name)

Чтобы проверить себя, выведите новый список в консоль.

print(capitalized_names)

В результате должен получиться такой список:

[‘Alice’, ‘Bob’, ‘Charlie’, ‘Diana’, ‘Eve’]

Указанный список небольшой. В пяти именах можно было бы и вручную заменить все строчные первые буквы на заглавные. Но представьте, что в списке — база имен клиентов целой компании, больше десяти тысяч вхождений — тут без циклов уже не обойтись.

В Java циклы работают схожим образом: даже ключевые слова для их создания похожи. Если вы хотите узнать побольше о другом языке программирования, а именно о Java, поступайте на курс «Java-разработчик». Эксперты расскажут вам про всё — от переменных до принципов объектно-ориентированного программирования.

Что делает итератор

Итеративные операции выполняют с помощью итератора. Инструмент есть во всех языках программирования, где возможен итеративный подход.

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

for name in names:

Если задать его явно:

names = [«alice», «bob», «charlie», «diana», «eve»]
iterator = iter(names) # Создаем итератор явно

while True:
try:
name = next(iterator) # Получаем следующий элемент
print(name)
except StopIteration:

Результат был бы тот же, только занимал бы больше места в коде. Поэтому создавать итератор явно без необходимости не стоит.

Но иногда может понадобиться и явное создание итератора. Например, если между итерациями нужно с получаемыми данными что-то делать.

Представьте, что в списке имен есть повторы.

names = [«alice», «bob», «charlie», «alice», «diana», «bob», «alice»]

Вы хотите подсчитать все повторы. Для этого придется создать итератор явно.

iterator = iter(names) # Создаем итератор для списка
name_counts = {} # Создаем пустой словарь для подсчета количества имен

try:
while True: # Бесконечный цикл, который будет завершен с помощью исключения
name = next(iterator) # Получаем следующее имя из итератора
capitalized_name = name.capitalize() # Капитализируем имя

# Подсчитываем количество встреч имени
if capitalized_name in name_counts:
name_counts[capitalized_name] += 1
else:
name_counts[capitalized_name] = 1

print(capitalized_name) # Выводим капитализированное имя
print(name_counts) # Выводим количество повторов

except StopIteration:
print(«Итерация закончена.») # Завершаем цикл, когда элементы закончились

Результат будет немного отличаться от предыдущего: теперь кроме самих имен с заглавной буквы получается еще и счетчик повторов:

Alice
Bob
Charlie
Alice
Diana
Bob
Alice
Итерация закончена.
Счетчик имен: {‘Alice’: 3, ‘Bob’: 2, ‘Charlie’: 1, ‘Diana’: 1}

Если вам нравится программирование и работа с данными, подумайте о поступлении на курс «Python-разработчик». Вам подробнее расскажут, что такое переменные, циклы и коллекции. Каждая тема — даже самая простая — сопровождается практическими занятиями.

В чём преимущества итераций при разработке

В разработке ПО итерации упрощают сложные задачи и позволяют постепенно добавлять новые функции и улучшения. В такой поэтапной разработке проще контролировать процесс и адаптироваться к изменениям.

В программировании это важный инструмент работы с большими объемами данных, с ним можно:

🟢 искать среди данных нужные вхождения с помощью циклов;
🟢 изменять большие объемы данных;
🟢 сортировать массивы, списки и коллекции.

Благодаря этому итерации есть в большинстве популярных языков программирования — C++, PHP, JavaScript, Java, Python.

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

Чем итерации отличаются от рекурсии

Итерация и рекурсия — два способа выполнения повторяющихся задач. Итерация использует циклы для повторения шагов, а рекурсия — это функция, которая вызывает сама себя.

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

Еще итерации используют меньше памяти по сравнению с рекурсией, которой нужно больше ресурсов.

Что такое итерации и алгоритмы

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

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

🟢 Есть два набора точек. Один из них — эталонный (неподвижный), другой — перемещаемый.
🟢 Для каждой точки из перемещаемого набора алгоритм ищет ближайшую точку в эталонном наборе.
🟢 Затем алгоритм использует пары ближайших точек и вычисляет оптимальное преобразование (смещение и вращение). Это уменьшает разницу между точками.
🟢 Алгоритм повторяет процесс.

С каждой новой итерацией различия между двумя наборами данных — в данном случае точками — уменьшаются.

Итерации позволяют алгоритмам быстро реагировать на изменения, поэтому именно итерационная модель заложена в основу машинного обучения.

Главное об итерациях

🟦 Итерация — это повторение действий. Когда что-то нужно делать много раз подряд до получения нужного результата, это называется итерацией.

🟦 В разработке ПО итерация — это просто этап работы. Разработку для удобства делят на маленькие циклы, каждый из которых длится несколько дней или недель. Каждый цикл посвящен конкретной функциональности.

🟦 Итерация в программировании — это один шаг в цикле. Циклы автоматически повторяют действия определенное количество раз или до выполнения условия. Каждое выполнение одного и того же действия в цикле называется итерацией.

🟦 Итерации есть в большинстве языков программирования. Примеры таких языков: C++, PHP, JavaScript, Java и Python. Итерации полезны для работы с большими объемами данных: помогают находить нужные элементы, изменять и сортировать данные.

🟦 Итерируемый объект — это многоэлементный объект, с которым можно работать по очереди. К таким объектам обычно относятся массивы, списки, строки, словари и другие виды коллекций. В отдельных языках они могут называться по-разному.

🟦 Итератор помогает выполнять итерации. Инструмент проходит по элементам итерируемого объекта по одному за раз. Он всегда есть, когда выполняются итерации: но задавать его можно явно и неявно. Явно его задают, только если нужно выполнять между итерациями какие-то другие операции.

🟦 Итерации помогают создавать алгоритмы более точными и использовать их для машинного обучения.

Проверь как ты усвоил материалы статьи
Пройди тест и узнай насколько ты лучше других читателей

Добавить комментарий