Python: Tuple (Кортежи)
Кроме изменяемых списков есть особый вид неизменяемых списков — tuple (кортежи). Кортежи обеспечивают определённую защиту от дурака — намеренных или случайных изменений, а также занимают меньше места в памяти.
Если у обычных списков используются квадратные скобки, то у кортежей круглые (они не обязательны). Сравним, сколько занимают места списки и кортежи.
tuple = (1, 2, 3, 4, 5) list = [1, 2, 3, 4, 5] print(tuple.__sizeof__()) # 64 print(list.__sizeof__()) # 80
Пустой кортеж можно создать через пустые круглые скобки.
emptyTuple = () print(str(type(emptyTuple))) #
Кортеж из одного элемента. Желательно поставить запятую в конце, иначе получим строку вместо кортежа.
oneTuple = ('t', )
Узнать длину кортежа можно через len().
myTuple = (1, 2, 3, 4, 5) print(len(myTuple)) # 5
Доступ к отдельному элементу осуществляется по индексу.
myTuple = (1, 2, 3, 4, 5) print(str(myTuple)) print(myTuple[2]) # 3
Кортежи можно использовать в словарях в качестве ключей.
myDict = <(1, 1): "Bars">print(myDict.get((1, 1)))
Можно проводить любые операции, которые не меняют список — методы index(), count().
Можно в один кортеж добавить другой. При этом кортеж внутри кортежа не теряет своей индивидуальности.
Допустим у нас есть старый кошкин дом. Он стал тесным и мы переселили котов в новый дом с другими жильцами.
old_cat_house = ("Барсик", "Мурзик", "Васька") new_cat_house = ("Рыжик", "Пушок", old_cat_house) # длина нового дома - два жильца и плюс один кортеж (хотя в нём три кота) print(len(new_cat_house)) # 3 # выводим всех котов нового дома print(new_cat_house) #('Рыжик', 'Пушок', ('Барсик', 'Мурзик', 'Васька')) # выводим третий элемент кортежа, который сам является кортежем print(new_cat_house[2]) # ('Барсик', 'Мурзик', 'Васька') # узнать общую длину нового кортежа с элементами второго кортежа print(len(new_cat_house) - 1 + len(new_cat_house[2]))
Кортеж tuple в Python
Кортежи — это неизменяемые последовательности, обычно используемые для хранения коллекций разнородных данных. Например двойной кортеж, создаваемый встроенной функцией enumerate(). Кортежи также используются в тех случаях, когда требуется неизменяемая последовательность однородных данных.
В Python кортежи представлены классом tuple() .
Кортежи могут быть созданы несколькими способами:
- Используя пару скобок для обозначения пустого кортежа: () .
- Использование запятой для одиночного кортежа: a, или (a,) .
- Разделение элементов запятыми: a, b, c или (a, b, c) :
Обратите внимание, что запятая создает кортеж, а не скобки. Скобки необязательны, за исключением случая пустого кортежа, или когда они необходимы, чтобы избежать синтаксической двусмысленности.
Например:- f(a, b, c) — вызов функции с тремя аргументами,
- f((a, b, c)) — вызов функции с кортежем в качестве единственного аргумента.
- Использование встроенного класса tuple() :
- tuple() — создаст пустой кортеж,
- tuple(iterable) — преобразует контейнер, поддерживающим итерацию в кортеж.
Конструктор класса tuple() создает кортеж, элементы которого совпадают и находятся в том же порядке, что и элементы итератора iterable . Аргумент iterable может быть либо последовательностью, контейнером поддерживающим итерацию, либо объектом итератора. Если iterable уже является кортежем, он возвращается без изменений. Если аргумент не задан, конструктор создает новый пустой кортеж () .
Для разнородных коллекций данных, где доступ по имени более понятен, чем доступ по индексу, collections.namedtuple() может быть более подходящим выбором, чем простой объект кортежа.
Примеры использования создания кортежа и преобразования объектов к типу tuple :
# Создание кортежа тип tuple >>> () # () >>> tuple() # () >>> 105, # (105,) >>> 1, 'a', 3, 'b' # (1, 'a', 3, 'b') # Преобразование строки str в кортеж тип tuple >>> tuple('abc') # ('a',' b',' c') # Преобразование списка list в кортеж тип tuple >>> tuple([1, 2, 3]) # (1, 2, 3) # Преобразование множества set в кортеж тип tuple >>> tuple(1, 2, 3>) # (1, 2, 3) # Преобразование генератора в кортеж тип tuple >>> tuple(range(5)) # (0, 1, 2, 3, 4)
- КРАТКИЙ ОБЗОР МАТЕРИАЛА.
- Утиная типизация ‘Duck Typing’
- Что такое вызываемый объект callable?
- Как проверить тип переменной/объекта
- Логический тип данных bool
- Целые числа int
- Ограничение длины преобразования целочисленной строки
- Вещественные числа float
- Комплексные числа complex
- Типы последовательностей
- Список list
- Кортеж tuple
- Диапазон range
- Текстовые строки str
- Словарь dict
- Множество set и frozenset
- Итератор Iterator, протокол итератора
- Генератор generator и выражение yield
- Контекстный менеджер with
- Байтовые строки bytes
- Байтовый массив bytearray
- Тип memoryview, буфер обмена
- Файловый объект file object
- Универсальный псевдоним GenericAlias
- Объект объединения Union
Python пустой кортеж
Вы можете создать пустой кортеж в Python двумя способами. Первый, который предоставляет никаких элементов в скобках, а второй не обеспечивает не имеющую потенциал функции TUPLE ().
Вы можете проверить, будет ли кортеж пустым или не найти его длину. Длина пустого кортежа равна нулю.
Создать пустой кортеж, используя скобки
В следующем примере мы создадим пустой кортеж, используя открывающиеся и закрывающие скобки без элементов в нем.
tupleX = ()
Создать пустой кортеж, используя кортеж ()
Tupple () – это встроенная функция, которая создает кортеж от итеративного. Если вы ничего не предоставляете этой функции, он возвращает пустой кортеж.
tupleX = tuple()
Проверьте, если кортеж пуст
Len () Встроенная функция, с кортежом в качестве аргумента, возвращает длину кортежа. Если длина равен нулю, то кортеж пусто. Еще нет.
tupleX = () if len(tupleX) == 0: print('Tuple is empty.')
Tuple is empty.
Резюме
В этом руководстве примеров Python мы узнали, как создать пустой кортеж.
Читайте ещё по теме:
- МЕТОДЫ ПРЕОБРАЗОВАНИЯ КОРТЕЖА В СТРОКУ В PYTHON
- Python Список кортежей
- Python вернуть несколько значений – как вернуть кортеж, список или словарь
- Python – конвертировать кортеж в список
- Python – создать кортеж
- Python Cuple для цикла
- Как нарезать кортеж в Python?
Пустой кортеж в Python
Тут надо понимать разница между присваиванием значения элементу списка, и присваиванием значения срезу списка.
Если перед «равно» у вас стоит один элемент списка, то значение справа от «равно» заменяет собой это значение:
l = [1, 2, 3] l[0] = () print(l) # Выведет: [(), 2, 3]
Но если в левой части присваивания у вас стоит срез списка, то срез — это последовательность, и заменить его можно только другой последовательностью. Поэтому интерпретатор рассматривает правую часть присваивания как последовательность, элементы которой надо присвоить срезу:
l = [1, 2, 3, 4, 5] l[:2] = (9, 9) print(l) # Выведет: [9, 9, 3, 4, 5]
В примере выше видно, что вместо среза первых двух элементов подставился не сам кортеж, а содержащиеся в нём элементы.
С пустым кортежем всё то же самое, только элементов в нём нет, и вместо взятого среза подставляется ничего.
l = [1, 2, 3, 4, 5] l[:2] = () print(l) # Выведет: [3, 4, 5]
Соответственно, если вашей целью является заменить срез на один элемент, представляющий собой пустой кортеж, то в правой части должен быть не просто пустой кортеж, а последовательность, содержащая один пустой кортеж:
l = [1, 2, 3] l[:] = [()] print(l) # Выведет: [()]
