JavaRush /Курсы /Модуль 1: Python Core /Циклы по элементам кортежа

Циклы по элементам кортежа

Модуль 1: Python Core
5 уровень , 13 лекция
Открыта

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')
2
Задача
Модуль 1: Python Core, 5 уровень, 13 лекция
Недоступна
Сумма кортежей
Сумма кортежей
2
Задача
Модуль 1: Python Core, 5 уровень, 13 лекция
Недоступна
Самый главный кортеж
Самый главный кортеж
Комментарии (29)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Gunslinger Уровень 13
27 августа 2026
Короткий вариант: t = ((1, 2, 3), (4, 5, 6), (7, 8, 9)) x = sum([sum(i) for i in t])
Stanislav Уровень 10
23 августа 2026

my_tuple = tuple(randrange(0,100) for i in range(6))
new_tuple = tuple(my_tuple[i:i+2] for i in range(0, len(my_tuple), 2))

max_value = None

for inner_tuple in new_tuple:
    for num in inner_tuple:
        if max_value is None or num > max_value:
            max_value = num

print(f'Максимальное значение: {max_value}')
PaPaY Уровень 13
18 марта 2026

nested_tuple = ((1,2,3),(4,5,6),(7,8,9))
max_value  = nested_tuple[0]

for nested_index in nested_tuple:
    for inner_index in nested_index:
        if inner_index > max_value:
            max_value = inner_index
print(f"Максимальне значення в кортежі: {max_value}")
6 августа 2026
nested_tuple[0] вернет весь первый кортеж. Если вы хотели взять первый элемент первого вложеного кортежа, то надо писать max_value = nested_tuple[0][0]
21 августа 2026
👍
PaPaY Уровень 13
18 марта 2026

nested_tuple = ((1,2),(3,4),(5,6))
total_sum = 0

for nested_index in nested_tuple:
    for index in nested_index:
        total_sum += index
print(total_sum)

Людмила Уровень 11
16 марта 2026
кто может помочь - почему у меня задачи локально стали сохраняться не в тот уровень ? например, задача 27 - Сумма кортежей - в level05 как исправить ? не критично, но не удобно
EvgenyXIV Уровень 31
15 марта 2026
НЕБРЕЖНОСТЬ! Лектор не объяснил, что результат работы sorted() это список и все последующие объекты будут списки, а не кортежи. temperatures = (15, 20, 23, 18, 22, 19, 21) sorted_temps = sorted(temperatures) # Исключаем первую и последнюю температуру filtered_temps = sorted_temps[1:-1]
Anonymous #3526511 Уровень 9
23 февраля 2026
tuple_all= tuple(tuple(i+j for i in range(5)) for j in range(4)) max_overall_value = max(element for tup in tuple_all for element in tup) print(max_overall_value)
Филипп Уровень 1
27 января 2026
Использование цикла 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}")
Как данный код связан с заголовком раздела "Использование цикла for с индексами..."?
Иван Уровень 48
17 декабря 2025

# Сумма кортежей

# Напишите программу, которая создает кортеж, содержащий несколько вложенных кортежей из целых чисел.
# Программа должна использовать цикл for для вычисления суммы всех элементов во вложенных кортежах и вывести результат.

# Напишите тут ваш код
t = tuple(tuple(i+j for i in range(5)) for j in range(4))
s = sum(sum(i) for i in t)
print(s)
ivk Уровень 1
21 сентября 2025
Почему этот код не подходит под пункт "Программа должна создать кортеж, который содержит несколько вложенных кортежей из целых чисел."...

import random

rows, cols = 3, 3  
sum_tuple = 0

user_tuple = ((random.randint(0,100) for _ in range(cols)) for _ in range(rows))  

for i_level1 in user_tuple:
    for i_level2 in i_level1:
        sum_tuple += i_level2
    
print(sum_tuple) 
Artem Уровень 13
9 ноября 2025
Потому что

random.randint
не преобразовывается в кортеж. Он генерирует "на лету" значения и не приводит их к явному типу. Если выведешь значение через

print(user_tuple)
, то поймёшь в чём дело. Преобразовывай генераторы сразу же в кортежи:

user_tuple = tuple(tuple(random.randint(0,100) for _ in range(cols)) for _ in range(rows))