Обход коллекции настолько распространенная задача, что многие языки программирования решают это введением специального вида цикла. В Python можно воспользоваться циклом for ... in
для обхода списка.
user_names = ['petya', 'vasya', 'evgeny']
# name на каждой итерации свой собственный (локальный)
for name in user_names:
print(name)
# => "petya"
# => "vasya"
# => "evgeny"
Цикл знает, как перебирать элементы, и знает о том, когда они закончатся. В цикле создается переменная name
. На каждой итерации она принимает следующее значение элемента списка user_names
.
Этот цикл отлично подходит для задач агрегации:
def calculate_sum(coll):
sum = 0
for value in coll:
sum += value
return sum
print(calculate_sum([3, 2, -10, 38, 0])) # => 33
for ... in
— это больше, чем просто цикл для списков. Для полного понимания принципов его работы нужно разбираться в темах, которые мы еще не проходили, среди них объекты, упаковка/распаковка и генераторы. Если по-простому, то разные данные в Python могут притворяться коллекциями элементов. Самый простой пример — это строка: for...in
перебирает строку посимвольно.
greeting = 'Hello'
for symbol in greeting:
print(symbol)
# => "H"
# => "e"
# => "l"
# => "l"
# => "o"
Однако не следует путать строку со списком. Несмотря на внешнюю схожесть доступа к элементам строки по индексу, строка списком не является.
Если заглядывать в будущее и в то, как пишется реальный код на Python, то там появляются функции высшего порядка. То есть на практике циклы, можно сказать, не нужны за редким исключением. Однако, невозможно перепрыгнуть работу с циклами, так как это база. А функции высшего порядка требуют понимания таких тем, которые за один присест не изучаются.
Остались вопросы? Задайте их в разделе «Обсуждение»
Вам ответят команда поддержки Хекслета или другие студенты
Для полного доступа к курсу нужен базовый план
Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.