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)))
        
undefined
1
Опрос
Кортежи в Python,  5 уровень,  14 лекция
недоступен
Кортежи в Python
Кортежи в Python