Цикл по спискам, кортежам, словарям и строкам, а также управление циклами - break, continue, pass
Что зацикливается
В программировании цикл означает повторение одного и того же набора вычислений в одной и той же последовательности несколько раз.
Подумайте о реальной ситуации. Вы - полевой биолог, измеряющий деревья в лесу. Вы выбираете дерево, измеряете его диаметр и высоту, записываете их в блокнот и оцениваете его общий объем.
Затем вы выбираете другое дерево, измеряете его диаметр и высоту, записываете их в блокнот и оцениваете его общий объем.
Затем вы выбираете еще одно дерево, измеряете его диаметр и высоту, записываете их в блокнот и оцениваете его общий объем.
Вы продолжаете повторять один и тот же процесс, пока все деревья в образце не будут исчерпаны. При программировании вы проходите цикл по каждому дереву и выполняете один и тот же набор задач в той же последовательности.
Возвращаясь к программированию, если вам дадут список целочисленных значений и попросят возвести каждый элемент в квадрат, затем добавить к ним 5 и, наконец, сообщить результат - это будет примером зацикливания.
Что мы можем перебрать?
Так что мы можем перебрать? По сути, любой итерируемый тип данных. Итерируемые объекты в Python - это последовательность значений, хранящихся в различных форматах данных, таких как:
- списки (например, [10,12,13,15])
- кортежи (например, (10,12,13,15)
- словари (например, {‘Name’: ‘Alan’, ‘Age’: 25})
- строки (например, «Data Science»)
Какие бывают петли?
Вы в основном встретите два типа циклов: цикл for и цикл while. Среди них циклы for являются наиболее распространенным видом, применяемым в задачах науки о данных. Ключевые отличия:
- циклы for повторяются конечное число раз для каждого элемента в повторяемом объекте
- в то время как циклы продолжаются до тех пор, пока не будет выполнено определенное условие
Цикл по спискам
Перебирать список довольно просто. Вам дадут список ценностей и попросят что-то сделать с каждым элементом. Допустим, у вас есть:
my_list = [1,2,3,4]
И вас просят вычислить квадрат каждого значения в списке:
for each_value in my_list: print(each_value * each_value) Out: 1 4 9 16
Точно так же вы можете делать немного более сложные циклы (например, «вложенные циклы»). Например, вам дают два списка и просят (i) умножить значения одного списка на другой, (ii) добавить их в пустой список и (iii) распечатать новый список. Давайте сделаем это по порядку:
new_list = [] list1 = [2, 3, 4] list2 = [4, 5, 6] for i in list1: for j in list2: new_list.append(i*j) print(new_list) Out: [8, 10, 12, 12, 15, 18, 16, 20, 24]
Цикл по кортежам
Цикл по кортежам может быть немного сложным в зависимости от того, как кортежи структурированы и что должно быть выполнено.
Давайте сохраним несколько кортежей в списке, каждый из которых представляет имена и возраст учащихся в классе:
students = [('Allie', 22), ('Monty', 18), ('Rebecca', 19)]
Теперь задача состоит в том, чтобы (i) извлечь все возрасты и (ii) сохранить их в списке и (iii) вычислить средний возраст:
ages = [] for i,j in students: ages.append(j) avg = sum(ages)/len(ages) print(avg) Out: 19.666666666666668
Каждый кортеж здесь содержит два элемента (имя и возраст). Даже если вас не интересуют имена, с помощью i и j вы указываете оба этих элемента и просите добавить элемент j (age ) в новом списке. Это называется «распаковкой кортежа».
Перебирать словари
Словари в Python представляют собой набор пар ключ-значение, то есть каждый элемент в словаре имеет ключ и соответствующее значение. Пример словаря:
# fruit price dictionary fruit_prices = {"apple": 2.50, "orange": 4.99, "banana": 0.59}
Вы можете перебирать эти элементы словаря и выполнять различные операции. Вот несколько примеров:
Извлечение всех ключей в словаре:
for i in fruit_prices.keys(): print(i) Out: apple orange banana
Сохранение всех значений в списке:
values = [] for i in fruit_prices.values(): values.append(i) print(values) Out: [2.5, 4.99, 0.59]
Задача: можете ли вы найти в словаре среднее значение всех цен?
Зацикливание на струнах
Рассмотрим строку - «Привет». Это похоже на повторяющийся объект? На самом деле это так.
for i in 'Hello': print(i) Out: H e l l o
Вы можете распаковать каждый символ в строке с помощью цикла for и выполнять с ними всевозможные операции.
Точно так же можно перебирать каждое слово в предложении. Однако в этом случае необходим дополнительный шаг, чтобы разделить предложение.
sent = 'the sky is blue' # splitting the sentence into words sent_split = sent.split() # extract each word with a loop for i in sent_split: print(i) Out: the sky is blue
Пока петли
Подобно циклам for, циклы while повторно выполняют блок кода - пока выполняется условие. Цикл прерывается только тогда, когда условие цикла ложно.
Общая структура циклов while выглядит так:
i = 0 while i <=5: print(i) i = i+1 # option to break out of the loop Out: 0 1 2 3 4 5
В приведенном выше примере на каждой итерации значение i печатается до тех пор, пока не достигнет 5. После этого условие цикла while становится ложным (т. Е. i ≤ 5 становится ложным, когда i = 6).
Практический вариант использования цикла while - это когда вы используете свои учетные данные для входа на веб-сайт. Вы не можете войти в систему , пока не предоставили правильное имя пользователя или пароль.
user_id = 'user101' while True: user = input('Enter your user ID: ') if user == user_id: print("You have entered ", user) break else: print("Enter a valid user ID ")
Контроль цикла: продолжить, прервать, пройти
Есть три вида так называемых ключевых слов управления циклом: break, continue и pass. Эти операторы изменяют ход цикла и позволяют программе выйти или пропустить часть цикла при срабатывании определенного внешнего условия.
Перерыв
Если в цикле присутствует оператор break
, он завершает цикл, когда условие удовлетворяется.
string = 'hello, there' for i in string: if i == ',': break print(i) Out: h e l l o
В приведенном выше фрагменте мы просим программу существовать, как только она находит запятую в строке и выполняет следующий оператор (который должен напечатать i). Подумайте о примере из реальной жизни, приведенном в начале. Вы, как полевой биолог, многократно проводите измерения деревьев. Но вы вырвитесь из этой петли - если пойдет дождь!
Продолжать
Вместо выхода из цикла оператор continue
просто пропускает итерацию и переходит к следующей.
Давайте выполним тот же код выше, но с ключевым словом continue.
string = 'hello, there' for i in string: if i == ',': continue print(i) Out: h e l l o t h e r e
Таким образом, в этом случае, если цикл встречает запятую, цикл просто продолжает пропускать запятую.
Итак, в примере измерения дерева, если вы встретите мертвое / сломанное дерево, вы просто пропустите его и переходите к следующему.
Проходить
pass
ничего не делает, это просто заполнитель для еще не написанного утверждения.
string = 'hello, there' for i in string: pass
Если мы не поместили туда pass
, будет выдано сообщение об ошибке, и остальная часть кода не будет выполнена.
Резюме
Целью этой статьи было дать интуитивное представление о for
loops и while
loops в Python. Были приведены примеры того, как перебирать повторяющиеся объекты, такие как списки, кортежи, словари и строки. Ближе к концу были рассмотрены концепции операторов управления циклом - break, continue и pass - с примерами.
Эта статья была нацелена на то, чтобы дать предварительный обзор того, как работают петли. В одном из следующих постов я расскажу о некоторых сложных задачах создания циклов, с которыми специалисты по обработке данных часто сталкиваются в своих проектах.
Надеюсь, эта статья была полезной, если у вас есть комментарии, не стесняйтесь записывать их ниже или связываться со мной через Medium, Twitter или LinkedIn.