Ітерація списком:
цикл for, підрахунок, сумування
Дізнайся, як зробити колекції даних у Python «живими», навчися швидко обробляти списки та автоматизувати обчислення за кілька рядків коду!
Почерговий перегляд кожного елемента списку.
Пошук кількості елементів за умовою.
Знаходження загальної суми та середнього балу.
Що таке ітерація?
Прогулянка по списку
Ітерація — це процес послідовного перегляду або обробки елементів списку один за одним.
Уявіть, що список — це пасажирський поїзд, а цикл for — контролер, який заходить у кожен вагон по черзі.
- Spotify: програвання пісень у плейлисті.
- Instagram: показування стрічки публікацій.
- Ігри: перевірка всіх ворогів на екрані.
Симулятор контролера у поїзді Готовий
Чому без ітерації складно?
Уявіть, що у вас є список із 1000 учнів. Якби ми не мали циклу for, нам довелося б писати окремий рядок коду для кожного елемента!
Без циклу (Жахливий спосіб)
1000 рядків
students = ["Аня", "Богдан", "Віка", ...]
print("Привіт,", students[0])
print("Привіт,", students[1])
print("Привіт,", students[2])
# ... і так ще 997 рядків дубльованого коду!
⚠️ Дублювання коду призводить до помилок, робить програму величезною та негнучкою.
З циклом for (Лаконічно)
2 рядкиstudents = ["Аня", "Богдан", "Віка", ...] for student in students: print("Привіт,", student)
✅ Працює однаково ідеально для списку з 3 елементів і для списку з 1 000 000 елементів!
Анатомія циклу for
У синтаксисі Python цикл for виглядає максимально природно та читається як звичайний англійський текст:
Конструкція: «Для кожного [елемента] у [списку]».
Тимчасова змінна (наприклад: item, i, x).
Обов’язковий символ у кінці заголовка циклу.
4 пробели вказують, що блок належить до циклу.
1. Пряма ітерація (без індексів)
Найпростіший та найпопулярніший спосіб, коли нам потрібні лише сами значення елементів, а не їхні номери (індекси).
Приклад з фруктами:
fruits = ["яблуко", "банан", "вишня"] for fruit in fruits: print("Я люблю", fruit)
Коли потрібно просто переглянути, вивести, перевірити або обчислити значення кожного елемента без зміни самого списку.
Візуальний покроковий виконавець:
2. З індексами: функція enumerate()
Іноді потрібно знати не лише сам елемент, а й його порядковий номер (індекс) у списку. Вбудована функція enumerate() створює пари (індекс, елемент).
Стандартна нумерація (з 0)
fruits = ["яблуко", "банан", "вишня"] for i, item in enumerate(fruits): print(i, item) # Вивід: # 0 яблуко # 1 банан # 2 вишня
i — отримує індекс, а item — саме значення!
Нумерація для людей (з 1)
fruits = ["яблуко", "банан", "вишня"] for i, item in enumerate(fruits, 1): print(f"{i}. {item}") # Вивід: # 1. яблуко # 2. банан # 3. вишня
💡 Другий параметр у enumerate(fruits, 1) вказує початковий номер лічильника!
3. Через range() та len()
Класичний спосіб, коли ми ітеруємось за індексами списку. Корисний, якщо потрібно змінювати елементи списку або звертатися до сусідніх елементів.
fruits = ["яблуко", "банан", "вишня"] for i in range(len(fruits)): print(i + 1, "Фрукт:", fruits[i])
Як це працює?
len(fruits)повертає 3 (довжину списку).range(3)генерує послідовність індексів:0, 1, 2.- Доступ до елемента отримуємо через квадратні дужки:
fruits[i].
Зміна елементів списку у циклі!
Якщо вам потрібно підновити/збільшити значення у списку, пряма ітерація не змінить самий список. Для зміни потрібен саме доступ за індексом fruits[i]!
numbers = [10, 20, 30] # Збільшуємо кожен елемент удвічі: for i in range(len(numbers)): numbers[i] = numbers[i] * 2 print(numbers) # [20, 40, 60]
Вкладені списки (2D-матриці)
Списки можуть містити всередині інші списки! Це ідеально підходить для представлення таблиць, ігрових дощок, пікселів зображення чи розкладу уроків.
Синтаксис подвійного циклу:
matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
for row in matrix: # Перебираємо рядки
for item in row: # Перебираємо елементи у рядку
print(item, end=" ")
print() # Перехід на новий рядок
Візуальна сітка (3x3):
Підрахунок елементів списку
Для підрахунку кількості певних елементів ми створюємо змінну-лічильник (зазвичай count = 0) і збільшуємо її на 1 за кожної відповідності.
Спосіб 1: Через цикл for та if
Універсальнийanimals = ["кіт", "собака", "кіт", "папуга", "кіт"] count = 0 for a in animals: if a == "кіт": count += 1 print("Кількість котів:", count) # 3
Спосіб 2: Вбудований метод .count()
Швидкийgrades = [10, 12, 9, 12, 11] twelves = grades.count(12) print("Кількість 12-ок:", twelves) # 2
len(grades).
Сумування елементів списку
Для обчислення загальної суми створюється змінна-накопичувач (наприклад total = 0), до якої на кожному кроці додається поточний елемент.
1. Сумування через цикл for
pocket_money = [50, 30, 40, 60] total = 0 for money in pocket_money: total = total + money # Або: total += money print("Всього грошей:", total) # 180
2. Вбудована функція sum()
pocket_money = [50, 30, 40, 60] total = sum(pocket_money) print("Швидка сума:", total) # 180
sum() виконує те ж саме миттєво в один рядок!
Умовна сума та Середнє значення
Додавання з умовою (if)
Додаємо лише ті гроші, які більше ніж 40 грн:
pocket_money = [50, 30, 40, 60] big_sum = 0 for money in pocket_money: if money > 40: big_sum += money print("Великі суми:", big_sum) # 110 (50 + 60)
Обчислення середнього балу
Формула: Сума / Кількість елементів
grades = [9, 10, 7, 8, 12] total = sum(grades) average = total / len(grades) print("Середній бал = ", average) # 9.2
Створення нових списків (.append())
Ітерація дозволяє не тільки переглядати дані, а й створювати нові модифіковані списки на основі існуючих за допомогою методу .append()!
Приклад: Піднесення чисел до квадрата
numbers = [2, 3, 4, 5] squares = [] # 1. Порожній список для результату for n in numbers: squares.append(n ** 2) # 2. Додаємо n у квадраті print("Квадрати:", squares) # [4, 9, 16, 25]
Малювання Черепашкою через ітерацію
Код з книги:
from turtle import * t = Turtle() positions = [50, 100, 150] for dist in positions: t.forward(dist) # Рух вперед t.left(90) # Поворот ліворуч t.forward(dist) # Рух вперед t.right(90) # Поворот праворуч
Онлайн Тренажер Коду Python
Обери задачу:
Вікторина • Питання 1 з 3
Що виведе наступна програма Python?
nums = [1, 2, 3]
total = 0
for x in nums:
total += x
print(total)
Вікторина • Питання 2 з 3
Яка вбудована функція повертає і індекс, і значення елемента під час ітерації?
Вікторина • Питання 3 з 3
Що буде виведено в результаті виконання наступного коду?
numbers = [2, 4, 6]
res = []
for x in numbers:
res.append(x * 2)
print(res)
Шпаргалка з ітерації
for item in list:
Простий перебір значень без знання індексів.
for i, item in enumerate(list):
Отримання індексу i та значення item одночасно.
total = sum(list) cnt = list.count(val)
Вбудовані швидкі функції для обчислень.