Как использовать циклы со списками в Python
Если вы использовали массивы в других языках программирования, вы можете найти нечто подобное в виде списков в Python. Единственное отличие состоит в том, что списки Python имеют дополнительное преимущество – динамический размер. Как и массивы, вы можете использовать их для хранения более одного элемента.
Почему требуется зацикливание?
При работе со списками могут возникнуть ситуации, когда вам нужно будет выполнить одну и ту же операцию с каждой записью в списке.
Например, вы можете взять среднее значение всех записей в списке. Аналогичным образом, что, если бы вы сохранили блоги в списке и хотели бы получить их заголовки?
У всех этих сценариев одна и та же проблема: они включают повторение. Чтобы решить эти проблемы, вы можете просто использовать циклы со списками в Python.
Давайте посмотрим, как циклы упрощают выполнение операций с несколькими элементами в списке на примере.
Понимание циклов со списками на примере
Предположим, вы хотите распечатать список американских пловцов года с 2016 по 2019 год (в 2020 году никто не был награжден из-за COVID-19). Без циклов вам придется извлекать каждое имя по одному из списка. Однако у этого метода есть две основные проблемы:
- Если вы работаете с длинным списком, печать каждого имени требует повторения и занимает много времени.
- Изменение кода для каждого экземпляра требует значительных усилий.
К счастью, цикл for может эффективно решить обе эти проблемы. Рассмотрим следующий код:
swimmers = [ 'phelps' , 'dressel' , 'kalisz' , 'dressel' ]
for swimmer in swimmers:
print(swimmer)
Давайте разберем этот код в три этапа:
- Вы определяете список пловцов и сохраняете в нем имена победителей.
- Вы определяете цикл for, по одному выбираете имя из списка пловцов и назначаете его переменной пловца .
- Вы просите Python напечатать имя, присвоенное пловцу в этой конкретной итерации.
Теперь Python продолжает повторять 2- й и 3- й шаги для печати всех пловцов в вашем списке. Для вашего удобства вы можете прочитать это так: «Для каждого пловца в моем списке пловцов отображать имя пловца». Вот результат:
Краткий обзор петель
Тема зацикливания имеет решающее значение, поскольку это один из основных подходов к автоматизации повторяющихся задач. Например, в нашем файле swimmers.py, Python обрабатывает первую строку Петли в:
for swimmer in swimmers:
Здесь вы говорите Python получить первое значение из вашего списка, пловцы. Затем он присваивает его вашему определенному пловцу переменной. Поскольку первое значение – phelps, к нему применяется следующее утверждение:
print (swimmer)
Важно понимать, что Python на этом этапе выводит самое актуальное значение swimmer , которое оказывается «phelps». Поскольку список состоит из нескольких значений, Python возвращается к первой строке цикла:
for swimmer in swimmers:
На этот раз Python выберет следующее имя из вашего списка, «dressel», и назначит его переменной swimmer. И снова Python выполнит следующий фрагмент кода:
print (swimmer)
Теперь Python печатает самое актуальное значение пловца , которым оказывается dressel. Точно так же Python повторит цикл и напечатает «kalisz» и «dressel».
После печати последнего значения Python снова переходит к первой строке цикла, и, поскольку больше нет записи, он перейдет к следующей строке. В этой программе после цикла for ничего нет, поэтому он заканчивается.
Продолжая перебирать списки, имейте в виду, что какой бы шаг вы ни определили в своем коде, он будет повторяться один раз для каждой записи списка, независимо от длины списка. Это означает, что даже если вы добавите в свой список миллиард записей, Python выполнит определенное вами действие миллиард раз.
Также следует отметить, что когда вы определяете свои циклы for, вы можете выбрать любое имя для временной переменной, назначенной каждой записи в списке. Но рекомендуется выбрать имя, которое соответствует вашему контексту для лучшей читаемости кода.
Например, вот эффективный подход к просмотру списка продуктов, птиц и действующих лиц:
for product in products:
for bird in birds:
for actor in actors:
Теперь, когда вы получили базовое представление о цикле for, вы можете манипулировать каждым элементом вашего списка. Возвращаясь к примеру с пловцом, вы можете поблагодарить каждого пловца за его навыки, написав следующий код:
swimmers = ['phelps', 'dressel', 'kalisz', 'dressel']
for swimmer in swimmers:
print(f"{swimmer.title()}, your swimming skills are terrific!")
Этот код работает точно так же, как и предыдущий; единственная разница в том, что вы создаете сообщение для каждого пловца, называя его имена. Как и раньше, цикл снова запускается для каждого пловца и выводит инструкцию для каждого из них. Как и ожидалось, сгенерированный результат показан ниже:
Вы также можете написать несколько операторов в цикле for. Имейте в виду, что цикл охватывает каждую строку с отступом, которая идет после пловца в пловцах, и Python выполняет каждую строку один раз для каждого значения списка. Следовательно, есть бесконечные возможности для всех записей в списке.
Например, вы можете написать другой оператор печати в приведенном выше примере.
swimmers = ['phelps', 'dressel', 'kalisz', 'dressel']
for swimmer in swimmers:
print(f"{swimmer.title()}, your swimming skills are terrific!")
print(f"Looking forward to see your in the next competition, {swimmer.title()}.
")
Поскольку вы использовали отступ для обоих операторов, Python выполняет каждый из них для каждой записи в списке.
После завершения цикла вы можете суммировать свой результат, а затем переходить к другим частям вашей программы. Эта часть после цикла не должна иметь отступа, поэтому она не повторяется.
Теперь вы можете легко просматривать списки
В этой статье вы узнали, зачем нужны циклы, как использовать циклы со списками и как Python обрабатывает записи в списке, когда он имеет отступ в цикле. Теперь вы можете использовать списки и циклы для написания более сложного кода и создания программ более высокого качества.
Чтобы проверить свои знания, вот простое упражнение: создайте список из 10 чисел и выведите только числа, которые делятся на пять.