Перейти до основного вмісту
Модуль 2 · Урок 1 із 45/36 у курсі~10 min
Модульні уроки (1/4)

для петель і діапазону

Цикл for в Python використовується для повторення послідовності елементів: список, рядок, діапазон, dict... все, що є "ітерованим".

Python
parole = ["ciao", "mondo", "!"]
for p in parole:
    print(p)
# ciao
# mondo
# !

Шаблон завжди однаковий: for <variable> in <iterable>:, за яким іде блок із відступом, який буде виконано один раз для кожного елемента.

range(...): генерація цілочисельних інтервалів

range створює відкладену послідовність цілих чисел. Три форми:

Python
range(5)         # 0, 1, 2, 3, 4
range(2, 6)      # 2, 3, 4, 5
range(0, 10, 2)  # 0, 2, 4, 6, 8     (step)
range(5, 0, -1)  # 5, 4, 3, 2, 1     (negative step)

range є ексклюзивним у правому кінці, як і slice. Це ледачий об'єкт: він не виділяє пам'ять для всіх чисел, він створює їх по одному.

Python
totale = 0
for i in range(1, 11):
    totale = totale + i
totale  # 55  (1+2+...+10)

Ітерація з індексом: enumerate

Якщо вам потрібен елемент і його індекс разом, використовуйте enumerate:

Python
parole = ["ciao", "mondo", "!"]
for i, p in enumerate(parole):
    print(i, p)
# 0 ciao
# 1 mondo
# 2 !

enumerate створює (index, value) пари, які ми призначаємо безпосередньо двом змінні за допомогою розпакування кортежів (ми побачимо це в модулі, присвяченому структури даних).

Ітерація двох послідовностей паралельно: zip

Python
nomi = ["Ada", "Linus", "Grace"]
anni = [36, 54, 79]
for n, a in zip(nomi, anni):
    print(f"{n} ha {a} anni")

zip зупиняється на найкоротшій послідовності.

діапазон() і лінь Python

У Python функція range() не виділяє фактичний список у пам’яті: вона повертає лінивий генератор, який видає числа по одному за запитом (наприклад, у циклі for). Це дозволяє повторювати мільйони цілих чисел без розвантаження оперативної пам’яті. Щоб перевірити значення діапазону як список, ви можете явно привести його за допомогою list(range(5)).

Спробуйте самі

вправи#python.m2.l1.e1
Спроби: 0Завантаження…

Обчисліть суму чисел від 1 до 100 (включно) за допомогою циклу for over range(...), призначте її до `total` і обчисліть.

Завантаження редактора…
Показати підказку

range(1, 101) генерує 1, 2, ..., 100 (виключно праворуч).

Рішення доступне після 3 спроб

Повторна вправа

вправи#python.m2.l1.e2
Спроби: 0Завантаження…

Маючи список `words = ['uno', 'due', 'tre']`, побудуйте список `пар` рядків, таких як '0:uno', '1:due', '2:tre' за допомогою enumerate. Оцініть `пари`.

Завантаження редактора…
Показати підказку

enumerate(words) повертає (індекс, значення) на кожній ітерації.

Рішення доступне після 3 спроб

Додатковий виклик

вправи#python.m2.l1.e3
Спроби: 0Завантаження…

Calculate the sum of all even numbers from 2 to 20 inclusive using a `for` loop over a `range`. Store the final sum in `even_sum` and evaluate it.

Завантаження редактора…
Показати підказку

Використовуйте діапазон (2, 21, 2), щоб перебирати лише парні цілі числа від 2 до 20.

Рішення доступне після 3 спроб