Python — Кортежи (Tuple)
Кортеж Python используется для хранения последовательности неизменяемых объектов Python. Кортеж похож на списки (List), поскольку значение элементов, хранящихся в списке, может быть изменено, в то время как кортеж неизменяем, и значение элементов, хранящихся в кортеже, не может быть изменено.
Создание кортежа в Python
Кортеж можно записать как набор значений, разделенных запятыми (,
), заключенных в круглые скобки ()
. Круглые скобки необязательны, но их использование является хорошей практикой. Кортеж может быть определен следующим образом.
T1 = (101, "Peter", 22) T2 = ("Apple", "Banana", "Orange") T3 = 10,20,30,40,50 print(type(T1)) print(type(T2)) print(type(T3))
Вывод:
<class 'tuple'> <class 'tuple'> <class 'tuple'>
Примечание: Кортеж, который создается без использования круглых скобок, также известен как упаковка кортежа.
Пустой кортеж может быть создан следующим образом.
T4 = ()
Создание кортежа с одним элементом немного отличается. Нам нужно поставить запятую после элемента, чтобы объявить кортеж.
tup1 = ("JavaTpoint") print(type(tup1)) #Creating a tuple with single element tup2 = ("JavaTpoint",) print(type(tup2))
Вывод:
<class 'str'> <class 'tuple'>
Кортеж индексируется так же, как и списки. Доступ к элементам кортежа можно получить, используя их конкретное значение индекса.
Пример — 1
tuple1 = (10, 20, 30, 40, 50, 60) print(tuple1) count = 0 for i in tuple1: print("tuple1[%d] = %d"%(count, i)) count = count+1
Вывод:
(10, 20, 30, 40, 50, 60) tuple1[0] = 10 tuple1[1] = 20 tuple1[2] = 30 tuple1[3] = 40 tuple1[4] = 50 tuple1[5] = 60
Пример — 2
tuple1 = tuple(input("Enter the tuple elements ...")) print(tuple1) count = 0 for i in tuple1: print("tuple1[%d] = %s"%(count, i)) count = count+1
Вывод:
Enter the tuple elements . ..123456 ('1', '2', '3', '4', '5', '6') tuple1[0] = 1 tuple1[1] = 2 tuple1[2] = 3 tuple1[3] = 4 tuple1[4] = 5 tuple1[5] = 6
Индексирование и нарезка в кортеже Python
Индексация и нарезка в кортеже аналогичны спискам. Индексация в кортеже начинается с 0
и продолжается до length(tuple) - 1
.
Доступ к элементам кортежа можно получить с помощью оператора index []
. Python также позволяет использовать оператор двоеточия для доступа к нескольким элементам в кортеже.
Для детального понимания индексации и нарезки рассмотрим следующее изображение.
Рассмотрим следующий пример:
tup = (1,2,3,4,5,6,7) print(tup[0]) print(tup[1]) print(tup[2]) # It will give the IndexError print(tup[8])
Вывод:
1 2 3 tuple index out of range
В приведенном выше коде кортеж имеет 7 элементов, которые обозначают от 0 до 6. Мы попытались получить доступ к элементу вне кортежа, что вызвало ошибку IndexError
.
tuple = (1,2,3,4,5,6,7) #element 1 to end print(tuple[1:]) #element 0 to 3 element print(tuple[:4]) #element 1 to 4 element print(tuple[1:5]) # element 0 to 6 and take step of 2 print(tuple[0:6:2])
Вывод:
(2, 3, 4, 5, 6, 7) (1, 2, 3, 4) (1, 2, 3, 4) (1, 3, 5)
Отрицательная индексация в кортеже (Tuple) Python
Доступ к элементу кортежа также может осуществляться с помощью отрицательной индексации. Индекс -1 обозначает самый правый элемент, -2 — второй последний элемент и так далее.
Элементы слева направо обходятся с использованием отрицательной индексации. Рассмотрим следующий пример:
tuple1 = (1, 2, 3, 4, 5) print(tuple1[-1]) print(tuple1[-4]) print(tuple1[-3:-1]) print(tuple1[:-1]) print(tuple1[-2:])
Вывод:
5 2 (3, 4) (1, 2, 3, 4) (4, 5)
Удаление кортежа (Tuple) в Python
В отличие от списков, элементы кортежа не могут быть удалены с помощью ключевого слова del
, поскольку кортежи неизменяемы.
del
вместе с именем кортежа.Рассмотрим следующий пример.
tuple1 = (1, 2, 3, 4, 5, 6) print(tuple1) del tuple1[0] print(tuple1) del tuple1 print(tuple1)
Вывод:
(1, 2, 3, 4, 5, 6) Traceback (most recent call last): File "tuple.py", line 4, in <module> print(tuple1) NameError: name 'tuple1' is not defined
Основные операции с кортежами
Такие операторы, как конкатенация (+
), повторение (*
), вхождения (in
) работают так же, как и со списком. Для более детального рассмотрения рассмотрим следующую таблицу.
Допустим, объявлены кортеж t = (1, 2, 3, 4, 5)
и кортеж t1 = (6, 7, 8, 9)
.
Оператор | Описание |
---|---|
| Оператор повторения позволяет повторять элементы кортежа несколько раз. |
+ | Конкатенирует кортеж, упомянутый по обе стороны от оператора. |
in | Возвращает true, если определенный элемент существует в кортеже, иначе false |
for in | Цикл for используется для итерации по элементам кортежа. |
Встроенные функции Python Tuple
Функция | Описание |
---|---|
cmp(tuple1, tuple2) | Сравнивает два кортежа и возвращает true, если кортеж1 больше кортежа2, иначе false. |
len(tuple) | Вычисляет длину кортежа. |
max(tuple) | Возвращает максимальный элемент кортежа |
min(tuple) | Возвращает минимальный элемент кортежа. |
tuple(seq) | Преобразует указанную последовательность в кортеж. |
Где используется кортеж (Tuple)?
Использование кортежа вместо списка используется в следующем сценарии.
Использование кортежа вместо списка дает нам четкое представление о том, что данные кортежа являются постоянными и не подлежат изменению.
Кортеж может имитировать словарь без ключей. Обратите внимание на следующую вложенную структуру, которую можно использовать в качестве словаря.
[(101, "John", 22), (102, "Mike", 28), (103, "Dustin", 30)]
Отличие кортежа (Tuple) от списка (List)
Список (List) | Кортеж (Tuple) |
---|---|
Синтаксис списка обозначается символом [] . | Синтаксис кортежа обозначается знаком
|
Список является изменяемым. | Кортеж является неизменяемым. |
Список имеет переменную длину. | Кортеж имеет фиксированную длину. |
Список обеспечивает большую функциональность, чем кортеж. | Кортеж обеспечивает меньшую функциональность, чем список. |
Список используется в сценарии, в котором нам нужно хранить простые коллекции без ограничений, где значение элементов может быть изменено. | Кортеж используется в случаях, когда нам нужно хранить коллекции только для чтения, т.е. значение элементов не может быть изменено. Его можно использовать в качестве ключа внутри словаря. |
Списки занимают больше памяти, чем кортежи. | Кортежи более эффективны с точки зрения использования памяти благодаря своей неизменяемости. |
Что такое кортежи и как с ними работать в языке Python
Автор Сергей УшаковВ прошлый раз мы говорили про методы работы со строками в языке Python. Сегодня поговорим про кортежи Python. Читайте далее про особенности создания, использования и работы с кортежами в популярном языке программирования Python.
Для чего нужны кортежи в Python
Кортеж в Python — это более быстрый и неизменяемый аналог списка. Он очень часто используется для защиты хранимых данных приложения от незапланированных или непреднамеренных изменений. Кортеж также требует выделения значительно меньшего количества памяти. Кортеж представляет собой последовательность элементов (как список), которая не позволяет удалять, добавлять или изменять свое содержимое. Таким образом, каждый кортеж создается только один раз и существует в первоначальном виде на протяжении всего цикла работы приложения.
Как работают кортежи в Python: несколько практических примеров
Существует 2 способа создания кортежа: с помощью встроенной функции tuple()
и с помощью круглых скобок [1]:
a = tuple() type(a) #tuple a = () type(a) #tuple
Для наглядности создадим кортеж из одного элемента. Стоит также отметить, что в кортежах между элементами ВСЕГДА ставится запятая (даже если кортеж состоит из одного элемента) [1]:
t = ('s') type(t) # Внимание: str!!! t = ('s',) type(t)
Вышеприведенная функция tuple() часто используется для создания кортежей из различных других структур данных (например, списков):
data = ["Иван", 37, "Яндекс"] t = tuple(data) print(t) #('Иван', 37, 'Яндекс')
Для того, чтобы вывести отдельный элемент кортежа, достаточно указать его индекс [1]:
print(t[0]) print(t[1]) print(t[2]) # Иван #37 #Яндекс
Но так как кортеж является неизменяемой (immutable) структурой, у нас не получится изменить его содержимое. Следовательно, следующая попытка исполнения кода выдаст ошибку [1]:
t[0] = "Андрей"
Ошибка при попытке изменить содержимое кортежа
Однако, при необходимости, мы можем разложить кортеж на отдельные переменные для дальнейшей работы с ними [1]:
data = ["Иван", 37, "Яндекс"] name, age, company = tuple(data) print(name) # Иван print(age) #37 print(company) # Яндекс
Таким образом, благодаря поддержке кортежей, Python обеспечивает разработчика гарантией защиты данных от непреднамеренных изменений в приложении, что повышает его отказоустойчивость. Это делает Python универсальным и надежным средством для работы с производительными приложениями, а также с Big Data обработкой.
Computer vision на Python
Освоить Python на профессиональном уровне в разработчика различных приложений и прочих прикладных областях Data Science вы сможете на практических курсах по Python в нашем лицензированном учебном центре обучения и повышения квалификации ИТ-специалистов в Москве:
- DPREP: Подготовка данных для Data Mining на Python
- Разработка и внедрение ML-решений
- Графовые алгоритмы. Бизнес-приложения
- Нейронные сети на Python
- NLP с Python
Записаться на курс
Смотреть раcписание
Источники
- https://metanit.com/python/tutorial/3.2.php
Python Tuples — GeeksforGeeks
Tuple — это коллекция объектов Python, очень похожая на список. Последовательность значений, хранящихся в кортеже, может быть любого типа, и они индексируются целыми числами.
Значения кортежа синтаксически разделяются запятыми. Хотя это и не обязательно, чаще кортеж определяют, заключая последовательность значений в круглые скобки. Это помогает легче понять кортежи Python.
Создание кортежа
В Python кортежи создаются путем размещения последовательности значений, разделенных «запятой», с использованием или без использования круглых скобок для группировки последовательности данных.
Примечание: Создание кортежа Python без использования круглых скобок известно как упаковка кортежей.
Программа Python для демонстрации добавления элементов в Tuple.
Python3
|
Output:
Initial empty Tuple: () Кортеж с использованием String: («Вундеркинды», «Для») Кортеж с использованием списка: (1, 2, 4, 5, 6) Кортеж с использованием функции: ("G", "e", "e", "k", "s")
Создание кортежа со смешанными типами данных.
Кортежи могут содержать любое количество элементов и любого типа данных (например, строки, целые числа, список и т. д.). Кортежи также можно создавать с помощью одного элемента, но это немного сложно. Недостаточно иметь один элемент в круглых скобках, должна быть запятая в конце, чтобы сделать его кортежем.
Python3
|
Выход:
9017. (5, «Добро пожаловать», 7, «Вундеркинды») Кортеж с вложенными кортежами: ((0, 1, 2, 3), ('питон', 'выродок')) Кортеж с повторением: («Вундеркинды», «Вундеркинды», «Вундеркинды») Кортеж с петлей («Вундеркинды»,) (('Вундеркинды',) ((('Вундеркинды',),),) (((('Вундеркинды',),),),) ((((('Вундеркинды',),),),),)Сложности создания кортежей:
Временная сложность: O(1)
Вспомогательное пространство: O(n)
Доступ к кортежам
4 Кортежи неизменны и обычно содержат последовательность из
кортежей, неизменяемых, обычно разнородные элементы, доступ к которым осуществляется посредством распаковки или индексации (или даже по атрибуту в случае именованных кортежей). Списки изменяемы, а их элементы обычно однородны, и доступ к ним осуществляется путем перебора списка.Примечание: При распаковке кортежа количество переменных в левой части должно быть равно количеству значений в данном кортеже a.
Python3
|
Вывод:
Первый элемент кортежа: г Значения после распаковки: Компьютерщики Для Компьютерщики
Сложности доступа к элементам в кортежах:
Временная сложность: O(1)
Пространственная сложность: O(1)
Конкатенация кортежей
Конкатенация двух или более кортежей Кортежи. Конкатенация выполняется с помощью оператора «+». Конкатенация кортежей всегда выполняется с конца исходного кортежа. Другие арифметические операции не применяются к кортежам.
Примечание- При конкатенации могут объединяться только одинаковые типы данных, при объединении списка и кортежа возникает ошибка.
Python3
|
Output:
Tuple 1: (0, 1, 2, 3) Кортеж2: («Вундеркинды», «Для», «Вундеркинды») Кортежи после конкатенации: (0, 1, 2, 3, «Гики», «Для», «Гики»)
Временная сложность: O(1)
Вспомогательное пространство: O(1)
Нарезка кортежа
Нарезка кортежа выполняется для извлечения определенного диапазона или фрагмента подэлементов из кортежа. Нарезка также может выполняться для списков и массивов. Индексация в списке приводит к выборке одного элемента, тогда как срез позволяет получить набор элементов.
Примечание. Отрицательные значения приращения также можно использовать для обращения последовательности кортежей.
Python3
|
Вывод:
Удаление первого элемента: («Е», «Е», «К», «С», «Ф», «О», «Р», «Г», «Е», «Е», «К», «С») Кортеж после того, как последовательность элементов перевернута: («С», «К», «Е», «Е», «Г», «Р», «О», «Ф», «С», «К», «Е», «Е», « Г') Печатные элементы между диапазоном 4-9: ('S', 'F', 'O', 'R', 'G')
Сложности для обхода/поиска элементов в кортежах:
Временная сложность: O(1)
Пространственная сложность: O(1)
Удаление кортежа
Кортежи являются неизменяемыми и, следовательно, они не позволяют удалить его часть. Весь кортеж удаляется с помощью метода del().
Примечание. Печать кортежа после удаления приводит к ошибке.
Питон
|
Traceback (most recent call last):
File “/home/efa50fd0709dec08434191f32275928a.py”, line 7, in
print(Tuple1)
NameError: name 'Tuple1' is not defined
Built-In Methods
Built-in-Method | Description | |||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
index( ) | Находит в кортеже и возвращает индекс заданного значения, если он доступен0167Встроенные функции
Кортежи VS Списки:
Недавние статьи о TupleПрограммы ставок
Useful Links:
A Step-by-Step Tutorial in 2022 (with 14 Примеры кода)28 марта 2022 г. При работе с коллекциями данных мы иногда сталкиваемся с ситуациями, когда мы хотим обеспечить невозможность изменения последовательности объектов после создания. Например, при чтении данных из базы данных в Python мы можем представить каждую запись таблицы как упорядоченную и неизменяемую последовательность объектов, поскольку нам не нужно позже изменять эту последовательность. Python имеет встроенный тип данных sequence для хранения данных в неизменном объекте, называемом кортежем . После того, как вы закончите это руководство по Python, вы будете знать следующее:
В этом руководстве мы предполагаем, что вы знакомы с основами Python, включая переменные, типы данных и базовые структуры. Если вы не знакомы с ними или хотели бы ознакомиться с ними, вы можете попробовать наши основы Python для анализа данных — Dataquest. Давайте погрузимся. Что такое кортеж Python?Кортеж представляет собой последовательность любых объектов, разделенных запятыми и заключенных в круглые скобки. Кортеж - это неизменный объект , что означает, что его нельзя изменить, и мы используем его для представления фиксированных коллекций элементов. Давайте посмотрим на несколько примеров кортежей Python:
Кроме того, другие объекты, такие как списки и кортежи, могут содержать кортеж, например: a_tuple = (0, [1, 2, 3], (4, 5, 6), 7.0) Приведенный выше код создает кортеж, содержащий целое число, список, кортеж и число с плавающей запятой. Следующий код возвращает весь кортеж и его тип данных. печать (a_tuple) печать (тип (a_tuple)) (0, [1, 2, 3], (4, 5, 6), 7,0) Однако печать (тип (('A'))) Итак, как мы можем объявить кортеж с одним значением? Ответ прост. Нам нужно добавить дополнительную запятую непосредственно перед закрывающей скобкой, например: Индексирование и нарезка кортежаКак упоминалось ранее, поскольку кортеж представляет собой последовательность объектов, мы можем получить доступ к этим объектам посредством индексации. Как и в случае со строками, индекс первого элемента равен 0, второго элемента — 1 и так далее. Давайте попробуем проиндексировать кортеж: print('Первый элемент:', a_tuple[0]) print('Последний элемент:', a_tuple[-1]) print('Тип данных второго элемента:', type(a_tuple[1])) Первый элемент: 0 Последний элемент: 7. 0 Тип данных второго элемента: В приведенном выше коде первая и вторая инструкции возвращают значения первого и последнего элементов кортежа. Последний оператор выводит тип данных второго элемента кортежа, который является объектом списка. Кроме того, следующий фрагмент кода показывает, как получить второй элемент внутреннего кортежа по индексу 2. печать (a_tuple [2] [1]) 5 Это означает, что мы можем получить доступ к элементу, хранящемуся во внутреннем кортеже (кортеже, хранящемуся внутри другого кортежа), выполнив ряд операций индексирования. Разрезать кортеж так же просто, как разрезать строку Python или список по тем же правилам. Чтобы получить диапазон элементов в кортеже, мы можем указать диапазон индексов для извлечения, выбрав, где начинать (включительно) и заканчивать (исключительно) диапазон. Давайте посмотрим на несколько примеров: num_tuple = 2, 4, 5, 7, 8, 10 печать (num_tuple [: 3]) печать (num_tuple [4:]) печать (num_tuple [-3:]) печать (num_tuple [2: 5]) (2, 4, 5) (8, 10) (7, 8, 10) (5, 7, 8) Первая строка кода объявляет кортеж целочисленных значений. Хотя это необычно, это еще один способ объявить кортеж, предоставив последовательность объектов, разделенных запятыми, не заключая их в круглые скобки. Последующие операторы выводят разные фрагменты кортежа, как показано. ПРИМЕЧАНИЕ Если вы не знакомы с индексированием и нарезкой объекта последовательности в Python или хотели бы ознакомиться с ним, в блоге Dataquest есть хороший учебник по адресу Tutorial: Demystifying Python Lists. Чтобы объединить два или более кортежей, мы можем использовать знак кортеж_1 = (1, 2) кортеж_2 = (3, 4) печать (кортеж_1 + кортеж_2) (1, 2, 3, 4) Более того, умножение кортежа на целое число дает кортеж, содержащий исходный кортеж, повторяющийся столько раз. Давайте попробуем: my_tuple = (1, 7, 9, 8) печать (my_tuple * 2) (1, 7, 9, 8, 1, 7, 9, 8) Сжатие кортежей Метод Предположим, у нас есть три разных кортежа, содержащие личные данные четырех клиентов. Мы хотим создать один кортеж, содержащий соответствующие данные для каждого клиента, включая их имя, фамилию и возраст, в виде отдельных кортежей: first_names = ('Саймон', 'Сара', 'Мехди', 'Фатиме') last_names = ('Синек', 'Смит', 'Лотфинеджад', 'Лопес') возраст = (49, 55, 39, 33) zip = zip (имя, фамилия, возраст) печать (в архиве) Мы объявляем кортежи клиентов = кортеж (сжатый) печать (клиенты) (('Симон', 'Синек', 49), ('Сара', 'Смит', 55), ('Мехди', 'Лотфинеджад', 39), ('Фатиме', 'Лопес', 33)) Кортеж Распаковка кортежейРаспаковка кортежа позволяет нам извлечь элементы кортежа и присвоить их именованным переменным. Попробуем: имя, фамилия, возраст = клиенты[2] print(first_name, last_name, ',', age, 'лет') Мехди Лотфинеджад, 39 лет Приведенный выше код извлекает элементы кортежа, хранящиеся в индексе 2 кортежа Разница между кортежами и списками в PythonПомимо интуитивно понятной разницы между кортежами и списками, как упоминалось ранее, кортежи неизменяемы, поэтому, в отличие от списков, кортежи не могут быть изменены. Однако некоторые технические отличия делают кортежи неоспоримым преимуществом в программировании на Python. Первое отличие, которое делает списки более предпочтительными итерируемыми объектами, чем кортежи, заключается в том, что объект-список предоставляет больше методов. Но дополнительная функциональность имеет свою цену. Давайте сначала посмотрим на размер занимаемой памяти каждого объекта в приведенном ниже коде, а затем обсудим, почему кортежи являются лучшим выбором в некоторых ситуациях. система импорта a_list = ['abc', 'xyz', 123, 231, 13.31, 0.1312] a_tuple = ('abc', 'xyz', 123, 231, 13.31, 0.1312) print('Размер списка:', sys.getsizeof(a_list), 'байт') print('Размер кортежа:', sys.getsizeof(a_tuple), 'bytes') Размер списка: 104 байта Размер кортежа: 88 байт Мы видим, что объект списка занимает больше памяти, чем объект кортежа. Значение занимаемого меньшего объема памяти становится более очевидным, когда мы работаем с большими данными, а это означает, что неизменность обеспечивает значительную оптимизацию при работе с большим объемом данных. Использование кортежей PythonВ этом разделе мы обсудим два интересных способа использования кортежей на практике. Давайте изучим их. Замена элементов кортежаМы можем использовать кортежи для замены значений, связанных с переменными, только если переменные являются элементами кортежа. Давайте попробуем: х = 19 у = 91 print('Перед заменой:') печать (f'x = {x}, y = {y}') (х, у) = (у, х) print('После замены:') печать (f'x = {x}, y = {y}') Перед заменой: х = 19, у = 91 После замены: х = 91, у = 19 Значение Возврат более одного значения из функцииФункции могут возвращать только одно значение. Однако мы можем использовать кортеж и поместить в него столько значений, сколько нам нужно, а затем вернуть объект кортежа в качестве возвращаемого значения функции. Давайте посмотрим, как мы можем использовать кортеж для возврата нескольких значений из функции в следующем коде: по определению сумма_и_среднее(х, у, г): с = х + у + г а = с/3 возврат (ы, а) (S, A) = сумма_и_среднее(3,8,5) печать('Сумма =', С) печать('Среднее =', А) Сумма = 16 Среднее = 5,3333333333333333 Функция ЗаключениеВ этом руководстве рассказывается, как создавать объекты кортежей, а также многие аспекты кортежей Python, такие как индексация, нарезка, сжатие, распаковка и т. Оставить комментарий
|