Кортежи (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 также позволяет использовать оператор двоеточия для доступа к нескольким элементам в кортеже.

Для детального понимания индексации и нарезки рассмотрим следующее изображение.

Индексирование и нарезка в кортеже 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)?

Использование кортежа вместо списка используется в следующем сценарии.

  1. Использование кортежа вместо списка дает нам четкое представление о том, что данные кортежа являются постоянными и не подлежат изменению.

  2. Кортеж может имитировать словарь без ключей. Обратите внимание на следующую вложенную структуру, которую можно использовать в качестве словаря.

[(101, "John", 22), (102, "Mike", 28),  (103, "Dustin", 30)]  

Отличие кортежа (Tuple) от списка (List)

Список (List) Кортеж (Tuple)
Синтаксис списка обозначается символом []. Синтаксис кортежа обозначается знаком ()
Список является изменяемым. Кортеж является неизменяемым.
Список имеет переменную длину. Кортеж имеет фиксированную длину.
Список обеспечивает большую функциональность, чем кортеж. Кортеж обеспечивает меньшую функциональность, чем список.
Список используется в сценарии, в котором нам нужно хранить простые коллекции без ограничений, где значение элементов может быть изменено. Кортеж используется в случаях, когда нам нужно хранить коллекции только для чтения, т.е. значение элементов не может быть изменено. Его можно использовать в качестве ключа внутри словаря.
Списки занимают больше памяти, чем кортежи. Кортежи более эффективны с точки зрения использования памяти благодаря своей неизменяемости.

список (list)

списки (list) vs кортежи (typle)