6.1 Цикл for
В Python цикли по елементах списку часто реалізуються за допомогою циклу for. Це один із найбільш часто використовуваних підходів до ітерації по списку, дозволяючи виконати блок коду для кожного елемента у списку.
Основи циклу for
Цикл for у Python проходить по кожному елементу списку, тимчасово присвоюючи значення поточного елемента змінній, вказаній після ключового слова for. Приклад:
fruits = ["apple", "banana", "cherry"]
for fruit in fruits:
print(fruit)
Обхід списку в зворотному порядку можна реалізувати за допомогою зрізів:
fruits = ["apple", "banana", "cherry"]
for fruit in fruits[::-1]:
print(fruit)
6.2 Цикл for з індексами
Крім обходу списку за допомогою класичного for, можна обійти список за допомогою циклу for у поєднанні з функцією range(). Це дозволяє працювати не тільки з самими елементами, але і з їх позиціями, що буває необхідно при виконанні більш складних маніпуляцій з даними.
Основи індексованої ітерації
Для ітерації по списку з доступом до індексу кожного елементу можна використовувати наступний підхід:
my_list = ['a', 'b', 'c', 'd']
for i in range(len(my_list)):
print(f'Index: {i}, Element: {my_list[i]}')
Переваги використання індексів
Використання індексів у циклах дозволяє не тільки отримувати доступ до кожного елемента, але і змінювати елементи списку на місці. Це особливо корисно, коли потрібно модифікувати список під час ітерації.
Приклад:
my_list = ['a', 'b', 'c', 'd']
for i in range(len(my_list)):
my_list[i] = my_list[i] * 2
Приклади складних маніпуляцій
З індексами легко реалізовувати алгоритми, які вимагають одночасного доступу до кількох елементів списку, наприклад, для порівняння поточного елементу з попереднім або наступним:
Приклад:
my_list = [3, 5, 2, 9, 4]
for i in range(1, len(my_list)):
if my_list[i] > my_list[i - 1]:
print(f'{my_list[i]} is greater than {my_list[i - 1]}')
6.3 Використання функції enumerate()
В Python функція enumerate() надає зручний спосіб ітерації по елементах списку з одночасним доступом до їх індексів. Це особливо корисно, коли необхідно обробляти і індекс, і значення елемента списку в рамках циклу.
Основи функції enumerate()
Функція enumerate() обгортає список у спеціальний об'єкт і повертає ітератор, який продукує кортежі (пари значень), що складаються з індексу і значення елемента:
my_list = ["apple", "banana", "cherry"]
for index, element in enumerate(my_list):
print(f'Index: {index}, Element: {element}')
Тепер у вас є не тільки елемент, але і його індекс.
Переваги enumerate()
Використання enumerate() робить код більш читабельним і дозволяє уникнути необхідності вручну управляти індексами за допомогою range(len(...)). Це спрощує маніпуляції з елементами списку, такі як зміна, доступ до елементів і виконання умовних перевірок.
Приклади використання
enumerate() ідеально підходить для задач, де потрібно одночасно змінювати елементи списку або порівнювати елементи з їх індексами:
my_list = ["apple", "banana", "cherry"]
for index, element in enumerate(my_list):
if index % 2 == 0:
print(f'Element {element} at even index {index}')
6.4 Цикл while
Ми обговорили for, а тепер давайте поговоримо про цикл while. Цей цикл теж може бути корисним при роботі з елементами списку.
Нагадую, що цикл while починає свою роботу з перевірки умови. Якщо умова істинна, виконується тіло циклу, а потім умова перевіряється знову. Процес повторюється до тих пір, поки умова не стане хибною.
Приклад ітерації по списку
Припустимо, у вас є список чисел, і ви хочете ітерувати через нього, поки не наткнетеся на певне значення:
numbers = [1, 2, 3, 4, 5, -1, 6]
i = 0
while i < len(numbers) and numbers[i] != -1:
print(numbers[i])
i += 1
Не дуже відрізняється від циклу for, чи не так? Але є випадки, де нам не потрібно використовувати індекс, щоб працювати з елементами списку. Наприклад, у списку зберігаються деякі завдання, їх потрібно по одному зі списку діставати, виконувати і видаляти зі списку.
Цей код схематично можна було б записати так:
tasks = [1, 2, 3, 4, 5, -1, 6]
while len(tasks) > 0:
task = tasks.pop()
print(task)
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ