Введение
Python предоставляет несколько различных типов коллекций данных, таких как списки, словари и множества. Одним из самых простых и часто используемых является кортеж. Кортежи используются для хранения неизменяемого упорядоченного набора значений. В этой статье рассмотрим основные особенности использования кортежей в Python, их преимущества и отличия от других структур данных.
Что такое кортеж?
Кортеж — это неизменяемая последовательность, состоящая из произвольного количества элементов. Элементы кортежа могут быть различного типа и размера. Они заключаются в круглые скобки () и являются более эффективными по сравнению со списками в плане использования памяти и производительности. Кортежи особенно полезны, когда данные должны оставаться неизменными.
Для преобразования в кортеж используется функция tuple.
Кортеж — это неизменяемый тип данных, и в скобках цифры изменять нельзя. То есть элементы кортежа изменять нельзя. И у него нет методов, которые могут изменять его элементы.
Кортеж по английски tuple.
Принцип работы кортежа похож на списки, но и есть некоторые отличия.
Если функция возвращает сразу несколько значений, то в результате возвращается кортеж из этих значений. И их можно присвоить переменным, даже не используя индексы.
Кортеж лучше использовать, когда нам не требуется изменять какие-либо данные.
Особенности работы кортежа:
- Занимает меньше памяти, и поэтому экономит место;
- Прирост производительности, так как кортеж работает быстрее, чем списки;
- На операции перебора элементов тратится гораздо меньше времени.
Рассмотрим практический пример использования кортежей
Условия задачи:
У нас имеется предустановленный, известный нам начальный список последовательности чисел.
Мы вызываем специальную функцию, которая будет изменять этот список, прибавляя 6 к каждому значению (цифре) списка.
В результате нам необходимо не изменить исходный список, а сформировать по нему новый список, с помощью создания его из нашего списка кортежа.
Пример кода:
Тот же код ниже для копирования и вставки в программу. Не забывайте про необходимый отступ пробелами в определённых местах в начале строки, так как код на сервере блога может отображаться некорректно.
def add_num(seq, number): # Создание функции, для взятия последовательности чисел
seq = list(seq) # Получение из параметра seq списка
for i_num in range(len(seq)):
seq[i_num] += number # Прибавляется к каждому значению кортежа number
return seq # Получение нового списка
origin_tuple = (1, 2, 3, 4, 5, 6)
changen_list = add_num(origin_tuple, 6)
print(origin_tuple) # Возвращение оригинальной последовательности цифр
print(changen_list) # Возвращение полученной новой последовательности, увеличенного каждого символа кортежа на 5
Пример работы кода:
Пример использования кортежей
# Создание кортежа
origin_tuple = (1, 2, 3, 4, 5, 6)
# Преобразование списка в кортеж
list_to_tuple = tuple([1, 2, 3])
# Изменение кортежа в список
list_from_tuple = list(origin_tuple)
# Проверка наличия элемента в кортеже
# Доступ к элементам кортежа
first_element = origin_tuple[0]
last_element = origin_tuple[-1]
# Преобразование кортежа в строку
str_representation = str(origin_tuple)
print(str_representation)
Основные свойства кортежей
- Неизменяемость: Элементы кортежа невозможно изменить после его создания. Это отличает кортежи от списков, где каждый элемент может быть изменён.
- Последовательность: Кортежи содержат фиксированное количество элементов, расположенных в определённом порядке.
- Эффективность: По сравнению со списками, кортежи используют меньше памяти и работают быстрее при выполнении операций перебора элементов.
- Поддержка индексации и срезов: Как и списки, кортежи поддерживают доступ к отдельным элементам через индексы и использование срезов для получения подмножества элементов.
- Преобразование в другие коллекции: С помощью функций tuple или list, кортеж можно легко преобразовать в список или обратно.
Основные свойства кортежей с примерами (сходство со списками):
- Кортежи те же самые списки, но только неизменяемые списки, и у них есть так же индексы.
nums = (15, 25, 35, 45, 55)
nums[2] # Вывод на консоль: 35. То есть мы можем брать цифры по индексу.
- Можем брать в кортежах срезы. Например,
nums[2:] # Вывод на консоль: (35 45 55)
- Можем проверять наличие элемента. Например,
30 in nums # Выведет: False
- Кортеж имеет свои методы
- В кортежах могут храниться числа и строки, списки и кортежи.
Отличительные особенности кортежей от списков:
- Для кортежей не обязательно прописывать круглые скобки. Пример:
user = 'Anton', 'Kozlov', '53'
user # Выведет: ('Anton', 'Kozlov', '53')
- Кортеж легко разложить на переменные кортежа, путём простого перечисления нужных переменных. Присваивание нашего кортежа разным (в нашем случае трём) переменным позволит быстро вывести соответствующие значения на консоль.
Пример работы в Python Console:
user = 'Anton', 'Kozlov', '53'
user
('Anton', 'Kozlov', '53')
name, surname, age = user # Переменные кортежа
name
'Anton'
surname
'Kozlov'
age
'53'
Использование кортежей в программировании
Кортежи часто применяются в ситуациях, когда требуется хранить набор неизменяемых данных. Вот несколько примеров использования кортежей:
- Хранение координат: Часто кортежи используются для хранения координат точек на плоскости, например, (x, y).
- Пакеты данных: В некоторых случаях кортежи удобно использовать для передачи нескольких параметров между функциями.
- Строковые представления: Для передачи нескольких аргументов в функцию или метод, где порядок важен.
Заключение
Кортежи — это мощная и удобная структура данных в Python, которая позволяет эффективно работать с неизменяемыми наборами данных. Их основными преимуществами являются эффективность, безопасность и возможность лёгкого преобразования в другие типы коллекций. Однако стоит помнить, что кортежи не предназначены для хранения изменяющихся данных, и в таких случаях лучше использовать списки.
ПОЛЕЗНЫЕ РЕСУРСЫ:
---------------------------------------------------
Сообщество дизайнеров в VK
https://vk.com/grafantonkozlov
Телеграмм канал сообщества
https://t.me/grafantonkozlov
Архив эксклюзивного контента
https://boosty.to/antonkzv
Канал на Дзен
https://dzen.ru/grafantonkozlov
---------------------------------------------------
Бесплатный Хостинг и доменное имя
https://tilda.cc/?r=4159746
Мощная и надежная нейронная сеть Gerwin AI
https://t.me/GerwinPromoBot?start=referrer_3CKSERJX
GPTs — плагины и ассистенты для ChatGPT на русском языке
https://gptunnel.ru/?ref=Anton
---------------------------------------------------