Рассказываем, что такое итерация и нужен ли для нее итератор. Объясняем роль итерации в программировании и что под ней понимают в самом процессе разработки программного обеспечения.
Что такое итерация
Итерация — это повторение чего-либо. В математике и бизнесе итерацией называют сам процесс повторения действий до достижения результата.
В разработке программного обеспечения итерация — это этап. Сложный процесс делят на короткие циклы, каждый из них длится от пары дней до нескольких недель. В каждую итерацию разрабатывают определенный функционал.
В программировании термин немного меняет значение. Здесь итерация — один этап повторения. Одно выполнение действия — одна итерация.
Как используются итерации в программировании
Итерации есть почти в каждом языке программирования. Время от времени нужно выполнять один и тот же набор инструкций для множества элементов. Основной инструмент, который использует итерации, — цикл.
Цикл указывает программе: «Повтори эти действия десять раз» или «Повторяй, пока не выполнится условие». Это похоже на указание тренера спортсмену бежать 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] = 1print(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. Итерации полезны для работы с большими объемами данных: помогают находить нужные элементы, изменять и сортировать данные.
🟦 Итерируемый объект — это многоэлементный объект, с которым можно работать по очереди. К таким объектам обычно относятся массивы, списки, строки, словари и другие виды коллекций. В отдельных языках они могут называться по-разному.
🟦 Итератор помогает выполнять итерации. Инструмент проходит по элементам итерируемого объекта по одному за раз. Он всегда есть, когда выполняются итерации: но задавать его можно явно и неявно. Явно его задают, только если нужно выполнять между итерациями какие-то другие операции.
🟦 Итерации помогают создавать алгоритмы более точными и использовать их для машинного обучения.
Добавить комментарий