Кортеж 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) |
---|---|
Синтаксис списка обозначается символом [] . |
Синтаксис кортежа обозначается знаком () |
Список является изменяемым. | Кортеж является неизменяемым. |
Список имеет переменную длину. | Кортеж имеет фиксированную длину. |
Список обеспечивает большую функциональность, чем кортеж. | Кортеж обеспечивает меньшую функциональность, чем список. |
Список используется в сценарии, в котором нам нужно хранить простые коллекции без ограничений, где значение элементов может быть изменено. | Кортеж используется в случаях, когда нам нужно хранить коллекции только для чтения, т.е. значение элементов не может быть изменено. Его можно использовать в качестве ключа внутри словаря. |
Списки занимают больше памяти, чем кортежи. | Кортежи более эффективны с точки зрения использования памяти благодаря своей неизменяемости. |