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
Комментарии (19)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Anonymous #1 Уровень 14
11 февраля 2026
как же меня раздражает, что индекс 1 не у первого элемента, а у второго, мне не стать программистом)))
Анатолий Уровень 49
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
Люто плюсую. Да в принципе весь уровень - полнейшая халтура.
Slevin Уровень 56
24 июня 2025
Ну викторина - как обычно. Отвечай на вопрос, пытаясь угадать, как рассуждал автор викторины, когда ее создавал
Bigcrash Уровень 9
29 мая 2025
Доступ к элементам вложенного кортежа Эту тему нужно было в предыдущую лекцию вставить. Там как раз для инициализации МАХ числа этих знаний не хватает. Еще у меня как у full_zero питон-юзера жуткое непонимание, накой нужны кортежи, если есть удобные изменяемые списки?
Юлия Уровень 7
8 марта 2025
В подпункте "пример создания вложенного кортежа из обычных" - дублируется фраза, которая была использована в другом примере выше. Данная фраза - не является корректной для примера, который она описывает. Речь про фразу - "в этом примере nested_tuple содержит три кортежа, каждый из которых состоит из трех элементов." В примере же написано 2 кортежа, а не 3.
Юлия Уровень 7
8 марта 2025
Так ведь в случаях создания "копии" кортежа 1. с прямым присваиванием и 2. с функцией tuple() - нового кортежа не создается как написано в лекции. Если сделать проверку - то станет видно, что у каждого из кортежей (оригинального и "копии") - одинаковые id-шники, т.е. объект кортежа остается один и тот же. В данных случаях - создается новая ссылка на тот же самый объект. Нового объекта-кортежа не создается, как, например, в случае, когда мы хотим сделать новый объект "список" с тем же самым содержимым и копируем список через метод .copy()
Ild Gih Уровень 64
9 февраля 2025
в лекции 10.2 Создание кортежа написано: Кортеж из одного элемента: Для создания кортежа с одним элементом необходимо поставить запятую после этого элемента. tuple1 = (1,) tuple2 = ("apple",) tuple3 = (True,) а в 3 вопросе "Как создать кортеж из одного элемента?" второй ответ "(element,)" считается неправильным, что тогда правильно ?!
b1sted Уровень 13
19 февраля 2025
Правильным вариантом считается вариант, озаглавленный, как: "Оба варианта верны", т.е.: 1. tuple1 = (1,) 2. tuple2 = 1, Для интерпретатора Python важно наличие запятой, а не круглых скобок. Именно запятая даёт понятие для интерпретатора, что объявляемую переменную нужно создавать с типом tuple.