JavaRush /Курсы /Модуль 1: Python Core /Продвинутая работа с кортежами

Продвинутая работа с кортежами

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

15.1 Создание копии кортежа

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

Однако в некоторых случаях может потребоваться создать копию кортежа, особенно когда важно работать с его отдельной версией, не изменяя исходные данные. Вот основные способы:

Прямое присваивание

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


original_tuple = (1, 2, 3, 4, 5)
copied_tuple = original_tuple
print(copied_tuple)
        

В этом случае copied_tuple будет ссылаться на тот же объект, что и original_tuple.

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

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


original_tuple = (1, 2, 3, 4, 5)
copied_tuple = tuple(original_tuple)
print(copied_tuple)

        

Этот метод особенно полезен, когда вы хотите убедиться, что создаете новый объект, даже если исходный объект может быть другим итерируемым объектом.

Преобразование через список

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


original_tuple = (1, 2, 3, 4, 5)

temp_list = list(original_tuple)
temp_list.append(6)
copied_tuple = tuple(temp_list)
            
print(copied_tuple)

        

В этом примере мы сначала преобразуем кортеж в список, добавляем новый элемент, а затем преобразуем список обратно в кортеж.

15.2 Объединение кортежей

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

Основные способы объединения кортежей

Конкатенация

Наиболее простой способ объединить два или более кортежей — это использовать оператор +. Этот метод создает новый кортеж, который является результатом конкатенации исходных кортежей.


tuple1 = (1, 2, 3)
tuple2 = (4, 5, 6)
combined_tuple = tuple1 + tuple2
            
print(combined_tuple)
        

В этом примере combined_tuple будет содержать элементы (1, 2, 3, 4, 5, 6).

Умножение на целое число

Вы также можете использовать оператор * для умножения кортежа на целое число. Это повторяет кортеж заданное количество раз и создает новый кортеж.


tuple1 = (1, 2, 3)
multiplied_tuple = tuple1 * 3
            
print(multiplied_tuple)
        

Здесь multiplied_tuple будет содержать элементы (1, 2, 3, 1, 2, 3, 1, 2, 3).

Функция itertools.chain

Для объединения большого числа кортежей можно использовать функцию chain из модуля itertools. Это удобно, когда количество кортежей для объединения неизвестно заранее.


from itertools import chain

tuple1 = (1, 2, 3)
tuple2 = (4, 5, 6)
tuple3 = (7, 8, 9)
            
combined_tuple = tuple(chain(tuple1, tuple2, tuple3))
print(combined_tuple)
        

Результат будет (1, 2, 3, 4, 5, 6, 7, 8, 9).

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

Кортежи, содержащие внутри себя другие кортежи, называются вложенными кортежами (nested tuples). Вложенные кортежи предоставляют удобный способ организации и структурирования данных, особенно когда необходимо представлять многомерные данные или сложные структуры.

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


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

В этом примере nested_tuple содержит три кортежа, каждый из которых состоит из трех элементов.

Пример создания вложенного кортежа из обычных:

В этом примере nested_tuple содержит три кортежа, каждый из которых состоит из трех элементов.


tuple1 = (1, 2, 3)
tuple2 = (4, 5, 6)
nested_tuple = (tuple1, tuple2)
            
print(nested_tuple)
        

Здесь nested_tuple будет содержать ((1, 2, 3), (4, 5, 6)).

Доступ к элементам вложенного кортежа

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


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

# Доступ к элементу 5 во втором вложенном кортеже
element = nested_tuple[1][1]
print(element)  # Вывод: 5
        

Многомерные массивы

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

Структурирование данных

Вложенные кортежи удобны для структурирования данных, таких как географические координаты (широта и долгота) для нескольких мест:


locations = (("New York", (40.7128, -74.0060)), 
             ("Los Angeles", (34.0522, -118.2437)), 
             ("Chicago", (41.8781, -87.6298)))
        
1
Опрос
Кортежи в Python, 5 уровень, 14 лекция
Недоступен
Кортежи в Python
Кортежи в Python
Комментарии (20)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Anonymous #1 Уровень 1
11 февраля 2026
как же меня раздражает, что индекс 1 не у первого элемента, а у второго, мне не стать программистом)))
Олег Сычев Уровень 4
23 мая 2026
Это не только в программировании используется, но и в любых вычислительных технологиях на компьютере. В том же CG, например, так что. стоит к этому сразу привыкать)
Анатолий Уровень 63
25 января 2026
Пурвый вопрос опросника не правильно сформулирован. "Каким типом коллекции...", а не "Какой тип коллекции..."
Vasyl Tverdokhlib Уровень 22
3 августа 2025
Как добавить элемент в кортеж? а где вариант "никак"?
shinobi Уровень 20
24 июля 2025
Опрос: Кортежи нельзя изменять ни при каких условиях. Мой ответ - да. НЕВЕРНО. Почему?
shinobi Уровень 20
24 июля 2025
Если Кортеж это НЕИЗМЕНЯЕМЫЙ объект, то почему в ОПРОСЕ его вдруг можно изменить?
shinobi Уровень 20
24 июля 2025
Ответьте, автор, а зачем вообще нужна копия кортежа? "... кортежи (tuples) — это неизменяемые последовательности элементов..." "Однако в некоторых случаях может потребоваться создать копию кортежа, особенно когда важно работать с его отдельной версией, не изменяя исходные данные. " Кортеж и так и так не изменяется, копия - будет даже ссылаться на тот-же кортеж, при "работе" с ним он тоже не будет изменяться, ну и нахрен нужна копия? Нахрен нужна вообще вся эта страница? Как по мне, портит впечатление от всего уровня, и так кортежи проходняк, ну похер, ради практики поделали задачки, но целая страница копипасты ради галочки, где тебе предлагают копировать кортеж просто присваиванием новой переменной и даже не объясняют зачем (смысла нет) зато не единого слово про УДАЛЕНИЕ кортежей, что реально могло быть полезным чтобы освобождать память, если соединяешь кортежи, то подчищаешь память и удаляешь за собой старые и ненужные.
P L Уровень 8
22 октября 2025
Люто плюсую. Да в принципе весь уровень - полнейшая халтура.
6 августа 2026
А я не согласен,во многих языках есть изменяемые и неизменяемые коллекции. Неизменяемые(кортежи) применяются даже чаще, чем изменяемые. Например вы по сети делаете запрос профиля пользователя для его просмотра - скорее всего для безопасности сохраните данные именно в кортеж, чтобы кто-то из вашей команды случайно не изменил данные. И таких пример множество.
Slevin Уровень 59
24 июня 2025
Ну викторина - как обычно. Отвечай на вопрос, пытаясь угадать, как рассуждал автор викторины, когда ее создавал
Serg Уровень 10
11 сентября 2026
Скорее как интерпретировала промпт на создание викторины ИИшка
Bigcrash Уровень 1
29 мая 2025
Доступ к элементам вложенного кортежа Эту тему нужно было в предыдущую лекцию вставить. Там как раз для инициализации МАХ числа этих знаний не хватает. Еще у меня как у full_zero питон-юзера жуткое непонимание, накой нужны кортежи, если есть удобные изменяемые списки?
Юлия Уровень 6
8 марта 2025
В подпункте "пример создания вложенного кортежа из обычных" - дублируется фраза, которая была использована в другом примере выше. Данная фраза - не является корректной для примера, который она описывает. Речь про фразу - "в этом примере nested_tuple содержит три кортежа, каждый из которых состоит из трех элементов." В примере же написано 2 кортежа, а не 3.
Юлия Уровень 6
8 марта 2025
Так ведь в случаях создания "копии" кортежа 1. с прямым присваиванием и 2. с функцией tuple() - нового кортежа не создается как написано в лекции. Если сделать проверку - то станет видно, что у каждого из кортежей (оригинального и "копии") - одинаковые id-шники, т.е. объект кортежа остается один и тот же. В данных случаях - создается новая ссылка на тот же самый объект. Нового объекта-кортежа не создается, как, например, в случае, когда мы хотим сделать новый объект "список" с тем же самым содержимым и копируем список через метод .copy()
Маруся Уровень 23
18 января 2025
Не хватает обратной связи в тех случаях, когда даешь неправильный ответ. Как понять, какой ответ в итоге был правильным? (особенно в тех случаях, когда ты уверен, что дал правильный ответ)
Никита Уровень 37
10 апреля 2025
Перезагрузи страницу и пройди еще раз. Я так делаю, пока не пройду все верно
shinobi Уровень 20
24 июля 2025
Жмёте "ответ", и там ответ предложенный автором, но чаще всего сделанный вообще другим способом который не относится ни к лекции, ни к уровням, чаще проще нейронку спрашивать