14.1 Цикл for

В Python обход элементов кортежа обычно реализуется с помощью цикла for. Это самый распространенный способ, который позволяет просто обратиться к каждому элементу кортежа и выполнить для него блок кода.

Цикл for

Цикл for проходит по каждому элементу кортежа, временно присваивая значение текущего элемента переменной, указанной после ключевого слова for. Пример:


my_tuple = (1, 2, 3, 4, 5)
for number in my_tuple:
    print(number)

Вы уже имеете опыт работы со списками и циклом for, поэтому давайте рассмотрим некоторые практические примеры:

Пример 1: Суммирование элементов кортежа

Давайте рассмотрим пример, где мы суммируем все элементы кортежа.


my_tuple = (10, 20, 30, 40, 50)
total = 0

for number in my_tuple:
    total += number

print(f"Сумма элементов кортежа: {total}")

В этом примере мы создаем кортеж my_tuple и переменную total для хранения суммы элементов. Используя цикл for, мы итерируем по каждому элементу кортежа и добавляем его к total. В итоге получаем сумму всех элементов кортежа.

Пример 2: Поиск максимального элемента

Теперь рассмотрим пример поиска максимального элемента в кортеже.


my_tuple = (5, 17, 23, 11, 2)
max_value = my_tuple[0]

for number in my_tuple:
    if number > max_value:
        max_value = number

print(f"Максимальное значение в кортеже: {max_value}")

В этом примере мы инициализируем переменную max_value первым элементом кортежа. Затем мы итерируем по всем элементам кортежа, сравнивая каждый элемент с текущим максимальным значением и обновляя max_value, если находим большее значение.

14.2 Вложенные кортежи

Кортежи могут содержать другие кортежи, и цикл for можно использовать для итерирования по вложенным структурам данных.


nested_tuple = ((1, 2, 3), (4, 5, 6), (7, 8, 9))

for inner_tuple in nested_tuple:
    for number in inner_tuple:
        print(number, end=' ')
    print()

В этом примере nested_tuple содержит кортежи. Мы используем вложенные циклы for для итерации по каждому элементу вложенных кортежей. Результат выполнения:


1 2 3 
4 5 6 
7 8 9 

14.3 Цикл for с индексами

Так же, как и у списка, у элементов кортежа есть индексы, поэтому можно обойти его элементы с помощью цикла for (в сочетании с функцией range()). Это позволяет работать не только с самими элементами, но и с их позициями, что бывает необходимо при выполнении более сложных манипуляций с данными.

Основы индексированной итерации

Для итерации по кортежу с доступом к индексу каждого элемента можно использовать код типа:


my_tuple = ('a', 'b', 'c', 'd')
for i in range(len(my_tuple)):
    print(f'index: {i}, Element: {my_tuple[i]}')

Преимущества использования индексов

С индексами легко реализовывать алгоритмы, которые требуют одновременного доступа к нескольким элементам кортежа, например, для сравнения текущего элемента с предыдущим или следующим.

Пример:


my_tuple = (15, 20, 23, 18, 22, 19, 21)
for i in range(1, len(my_tuple)):
    if my_tuple[i] > my_tuple[i - 1]:  # Сравниваем элемент с предыдущим
        print(f'{my_tuple[i]} is greater than {my_tuple[i - 1]}')

Использование цикла for с индексами для обработки данных

Предположим, у нас есть кортеж с данными о температуре за неделю, и мы хотим вычислить среднюю температуру, исключая экстремальные значения (самую низкую и самую высокую температуру).


temperatures = (15, 20, 23, 18, 22, 19, 21)
sorted_temps = sorted(temperatures)

# Исключаем первую и последнюю температуру
filtered_temps = sorted_temps[1:-1]

average_temp = sum(filtered_temps) / len(filtered_temps)
print(f"Средняя температура за неделю (без экстремальных значений): {average_temp}")

14.4 Использование функции enumerate()

В Python, функция enumerate() предоставляет удобный способ итерации по элементам кортежа с одновременным доступом к их индексам. Это особенно полезно, когда необходимо обрабатывать и индекс, и значение элемента списка в рамках цикла.

Основы функции enumerate()

Функция enumerate() оборачивает кортеж в специальный объект и возвращает итератор, который производит кортежи пар значений, состоящие из индекса и значения элемента кортежа:


my_tuple = ('apple', 'banana', 'cherry')
for index, element in enumerate(my_tuple):
    print(f'index: {index}, Element: {element}')

Теперь у вас есть не только элемент, но и его индекс.

Преимущества enumerate()

Использование enumerate() делает код более читабельным и позволяет избежать необходимости вручную управлять индексами с помощью range(len(…)). Это упрощает манипуляции с элементами списка, такие как изменение, доступ к элементам и выполнение условных проверок.

Примеры использования

Иногда нужно найти все индексы, где встречается определённое значение в кортеже.


my_tuple = (1, 2, 3, 2, 4, 2, 5)
search_value = 2
indices = []

for index, value in enumerate(my_tuple):
    if value == search_value:
        indices.append(index)

print(f"Значение {search_value} встречается на индексах: {indices}")

Этот код найдет все индексы, где значение 2 встречается в кортеже:


Значение 2 встречается на индексах: [1, 3, 5]

Фильтрация данных на основе индексов

Рассмотрим пример, где мы фильтруем данные на основе индексов, оставляя только элементы с чётными индексами.


my_tuple = ('a', 'b', 'c', 'd', 'e', 'f')

filtered_tuple = tuple(value for index, value in enumerate(my_tuple) if index % 2 == 0)
print(f"Кортеж с элементами на чётных индексах: {filtered_tuple}")

Этот код создаёт новый кортеж, содержащий только элементы с чётными индексами:


Кортеж с элементами на чётных индексах: ('a', 'c', 'e')
undefined
2
Задача
Модуль 1: Python Core, 5 уровень, 13 лекция
Недоступна
Сумма кортежей
Сумма кортежей
undefined
2
Задача
Модуль 1: Python Core, 5 уровень, 13 лекция
Недоступна
Самый главный кортеж
Самый главный кортеж