Python. Кортежи (tuple)
Данный урок посвящен кортежам (tuple) в Python. Основное внимание уделено вопросу использования кортежей, почему иногда лучше применять их, а не списки, рассмотрены способы создания и основные приемы работы с кортежами. Также затронем тему преобразования кортежа в список и обратно.
Что такое кортеж (tuple) в Python?#
Кортеж (tuple) – это неизменяемая структура данных, которая по своему подобию очень похожа на список. Как вы наверное знаете, а если нет, то, пожалуйста, ознакомьтесь с седьмым уроком, список – это изменяемый тип данных. Т.е. если у нас есть список a = [1, 2, 3] и мы хотим заменить второй элемент с 2 на 15, то мы может это сделать, напрямую обратившись к элементу списка.
С кортежем мы не можем производить такие операции, т.к. элементы его изменять нельзя.
Зачем нужны кортежи в Python?#
Существует несколько причин, по которым стоит использовать кортежи вместо списков. Одна из них – это обезопасить данные от случайного изменения. Если мы получили откуда-то массив данных, и у нас есть желание поработать с ним, но при этом непосредственно менять данные мы не собираемся, тогда, это как раз тот случай, когда кортежи придутся как нельзя кстати. Используя их в данной задаче, мы дополнительно получаем сразу несколько бонусов – во-первых, это экономия места. Дело в том, что кортежи в памяти занимают меньший объем по сравнению со списками.
Во-вторых – прирост производительности, который связан с тем, что кортежи работают быстрее, чем списки (т.е. на операции перебора элементов и т.п. будет тратиться меньше времени). Важно также отметить, что кортежи можно использовать в качестве ключа у словаря.
Создание, удаление кортежей и работа с его элементами Создание кортежей Для создания пустого кортежа можно воспользоваться одной из следующих команд.
Кортеж с заданным содержанием создается также как список, только вместо квадратных скобок используются круглые.
При желании можно воспользоваться функцией tuple() .
Доступ к элементам кортежа Доступ к элементам кортежа осуществляется также как к элементам списка – через указание индекса. Но, как уже было сказано – изменять элементы кортежа нельзя!
Удаление кортежей#
Удалить отдельные элементы из кортежа невозможно.
Но можно удалить кортеж целиком.
Преобразование кортежа в список и обратно#
На базе кортежа можно создать список, верно и обратное утверждение. Для превращения списка в кортеж достаточно передать его в качестве аргумента функции tuple() .
Как создавать и использовать кортежи в Python
Кортеж – это набор неизменяемых объектов Python. Он может содержать элементы любого произвольного типа данных (целое число, строка, число с плавающей запятой, список и т. Д.), Что делает его гибкой и мощной структурой данных. Он является частью основного языка Python и широко используется в программах и проектах Python.
Создание кортежа
Кортеж в Python можно создать, заключив все элементы, разделенные запятыми, в круглые скобки () .
Элементы кортежа неизменяемы и упорядочены. Он допускает повторяющиеся значения и может иметь любое количество элементов. Вы даже можете создать пустой кортеж. Элементы кортежа могут иметь любой тип данных (целое число, число с плавающей запятой, строки, кортеж и т. Д.).
Создание пустого кортежа
Пустой кортеж можно создать, используя пустые открывающие и закрывающие круглые скобки.
Создание кортежа с одним элементом
Чтобы создать кортеж с одним элементом, вам нужно добавить запятую после элемента, чтобы Python распознал его как кортеж.
Примечание: функция type () возвращает тип класса объекта, переданного в качестве параметра.
Отсутствие запятой после элемента приводит к типу класса t2 как 'float', поэтому обязательно использовать запятую после элемента при создании кортежа с одним значением.
Создание кортежа с разными типами данных
Элементы кортежа могут быть любого типа данных. Эта функция делает кортеж универсальным.
Создание кортежа с использованием конструктора tuple ()
Кортежи также можно создавать с помощью конструктора tuple () . Используя конструктор tuple (), вы можете преобразовывать последовательности, такие как список / словарь, в кортеж.
Создание вложенного кортежа
Кортежи можно легко вкладывать в другие кортежи. Вы можете вложить кортеж на любой желаемый уровень.
Доступ к элементам в кортеже
Вы можете получить доступ к элементам кортежа, используя номер индекса в квадратных скобках. Номер индекса начинается с 0. Кортеж также поддерживает отрицательную индексацию:
- -1: указывает на последний элемент
- -2: указывает на второй последний элемент и т. Д.
Нарезка кортежа
Вы можете получить доступ к диапазону элементов в кортеже, используя оператор двоеточие : . Tuple также поддерживает операцию нарезки с использованием отрицательных индексов.
Проверка наличия элемента в кортеже
Вы можете проверить, существует ли элемент в кортеже, используя ключевое слово in .
Обновление кортежей
Поскольку кортежи неизменны, изменить их значение невозможно. Python выдает ошибку TypeError, если вы попытаетесь обновить кортеж.
Но есть хитрость, если вы хотите обновить кортеж.
Изменение значения элементов кортежа с помощью списков
Вы можете изменить значение элементов в вашем кортеже, используя списки в Python . Сначала вам нужно преобразовать кортеж в список. Затем измените список по своему усмотрению. Наконец, преобразуйте список обратно в кортеж.
Добавление новых элементов в кортеж с помощью списков
Поскольку кортежи неизменяемы, невозможно добавлять новые элементы в кортеж. Python выдаст ошибку как:
Опять же, вы можете использовать наш прием (использование списков), чтобы справиться с этим. Сначала преобразуйте кортеж в список. Затем добавьте в список новые элементы. Наконец, преобразуйте список в кортеж.
Примечание. Метод append () используется в Python для добавления нового элемента в конец списка.
Операция удаления кортежей
Поскольку кортежи неизменяемы, невозможно удалить какой-либо элемент из кортежа. Если вы хотите удалить весь кортеж, это можно сделать с помощью ключевого слова del .
Но вы можете использовать тот же прием (со списками), который вы использовали для изменения и добавления элементов кортежа.
Удаление элементов из кортежа с помощью списков
Элементы могут быть удалены из кортежа с помощью списков в 3 простых шага:
Шаг 1. Преобразуйте кортеж в список.
Шаг 2. Удалите элементы из списка с помощью метода remove ()
Шаг 3: преобразовать список в кортеж.
Упаковка и распаковка кортежей
При создании кортежа присваиваются значения. Это называется упаковкой кортежа .
В то время как извлечение значений обратно в переменные называется распаковкой кортежа .
Цикл с кортежами Python
Кортежи – это повторяющиеся контейнеры, как и списки в Python. Вы можете легко перебирать элементы кортежа.
Использование for Loop
Цикл for в Python работает путем перебора элементов контейнера.
Использование порядковых номеров
Вы можете перебирать кортеж, используя индексы кортежей. Используйте функцию len (), чтобы найти размер кортежа.
Повышение эффективности вашего кода
Поскольку структура данных кортежа неизменна, скорость его обработки выше, чем у списков. Таким образом, он обеспечивает оптимизацию программ / проектов Python. Использование этой мощной и универсальной структуры данных (кортежей) в ваших программах на Python поднимет эффективность вашего кода на новый уровень.
Кортежи в Python
Кортеж в Python похож на список. Только в отличие от списка кортеж — неизменяемый, то есть менять его элементы после создания нельзя.
Как создать кортеж
Чтобы создать кортеж, нужно поместить все элементы, разделенные запятыми, в круглые скобки () . Скобки не обязательны, но рекомендуем их использовать.
Кортеж может иметь любое количество элементов разных типов (целые числа, числа с плавающей точкой, списки, строки и т. д).
Вывод:
Кортеж можно создать и без использования скобок. Это называется упаковкой кортежа.
Вывод:
Если нужно создать кортеж с одним элементом, все немного сложнее. Дело в том, что одного элемента в круглых скобках недостаточно. Понадобится добавить в конец запятую — иначе Python не поймет, что это кортеж.
Вывод:
Как получить элемент кортежа
1. По индексу
Мы можем использовать оператор индекса [] , чтобы получить доступ к элементу кортежа.
Примечание. Обратите внимание, что индексирование кортежа начинается с 0. То есть первый элемент кортежа имеет индекс 0.
Кортеж из 9 элементов будет иметь индексы от 0 до 8. Попытка получить доступ к индексу за пределами диапазона индексов кортежа (в нашем случае 9, 10 и т. д.) приведет к ошибке IndexeError.
Индекс должен быть целым числом, поэтому мы не можем использовать float или другие типы в качестве индекса. Это приведет к ошибке TypeError.
Точно так же доступ к вложенным кортежам осуществляется с помощью вложенной индексации, как показано в примере ниже.
Вывод:
2. По отрицательному индексу
Python допускает отрицательную индексацию коллекций (наборов значений). Она работает и с кортежами.
Индекс -1 отсылает к последнему элементу, -2 — ко второму элементу с конца и так далее.
Вывод:
3. С помощью срезов
Получить доступ к диапазону элементов в кортеже можно с помощью оператора срезов : .
Использование срезов еще называют слайсингом, от английского slicing — «нарезка».
Вывод:
Как изменить кортеж
Никак. В отличие от списков, кортежи неизменяемы. Это значит, что элементы кортежа нельзя изменять после добавления в кортеж. Однако если элемент сам по себе является изменяемым типом данных (например, списком), его вложенные элементы менять уже можно.
Переназначить кортеж тоже можно.
Вывод:
В Python кортежи можно объединить с помощью оператора + . Это называется конкатенацией.
С помощью оператора * можно повторить элементы в кортеже заданное количество раз.
Оба оператора + и * приводят к созданию нового кортежа.
Вывод:
Как удалить кортеж
Изменять элементы кортежа нельзя. Это значит, что удалять их тоже нельзя.
В Python можно только полностью удалить кортеж — с помощью ключевого слова del .
Вывод:
Методы кортежа
Методы добавления или удаления элементов недоступны для кортежа в силу его неизменяемости.
Для кортежа существует только два метода: .count() и .index() .
Вывод:
Другие операции с кортежами
1. Проверка на вхождение в кортеж
Мы можем проверить, существует ли тот или иной элемент в кортеже или нет, с помощью ключевого слова in и not in .
Вывод:
2. Итерирование по кортежу
Для перебора элементов кортежа можно использовать цикл for .
Вывод:
Преимущества кортежа над списком
Кортежи очень похожи на списки, поэтому они используются в похожих ситуациях. Выбор зависит от задачи. В одном случае эффективнее будет работать кортеж, а в другом — не обойтись без списка.
Кортеж (tuple) в Python
Кортеж в Python похож на список. Разница между ними заключается в том, что мы не можем изменить элементы кортежа после присваивания им значений, тогда как элементы списка мы можем изменить.
Создание кортежа в Python
Кортеж создается путем помещения всех элементов в круглые скобки () , разделенные запятыми. Круглые скобки необязательны, однако их использование является хорошей практикой. Кортеж может содержать любое количество элементов, и они могут быть разных типов (int, float, list, string и т.д.). Например:
Также мы можем создавать кортежи без использования круглых скобок:
Создание кортежа с одним элементом
В Python при создании кортежа с одним элементом нужно указывать запятую в конце, чтобы указать, что это именно кортеж (а не строка):
Мы можем использовать функцию type(), чтобы узнать, к какому классу принадлежит переменная или значение:
(«hello») — это строка, поэтому функция type() возвращает <class ‘str’> ;
(«hello»,) и «hello», — оба кортежа, поэтому функция type() возвращает <class ‘tuple’> .
Доступ к элементам кортежа в Python
Подобно списку, каждый элемент кортежа представлен индексными номерами (0, 1, …), где индекс первого элемента 0. Номер индекса используется для доступа к элементам кортежа. Например:
1. Индексация
Мы можем использовать оператор индекса [] для доступа к элементу в кортеже, у которого индекс начинается с 0.
Таким образом, кортеж, состоящий из 6 элементов, будет иметь индексы от 0 до 5. Попытка получить доступ к индексу за пределами диапазона индексов кортежа (например, к индексам 6 или 7) вызовет ошибку IndexError .
Индекс должен быть целым числом, поэтому мы не можем использовать тип float или другие типы. Это приведет к ошибке TypeError .
Аналогично, доступ к вложенным кортежам осуществляется с использованием вложенной индексации, как показано в следующем примере: