Кортеж (tuple) — упорядоченная коллекция элементов.
Кортежи очень похожи со спискама(list), за исключением следующих свойств:
Первый способ - перечислить внутри круглых скобок элементы через запятую
>>> a = (1, True, 'hello', 5)
>>> a
(1, True, 'hello', 5)
>>> type(a)
<сlass 'tuple'>
Второй способ создания это перечисление нескольких элементов через запятую без скобок. В таком случае все равно создаться кортеж.
>>> a = 1,True,'hello',5
>>> a
(1, True, 'hello', 5)
Кортеж получится даже если вы укажите один элемент, но после него поставите запятую
>>> a = 1,
>>> a
(1,)
Но если вы поставите один элемент без запятой или внутри скобок, это уже будет не кортеж.
>>> a = 1
>>> a
1
>>> b = (5)
>>> b
5
Также кортеж можно создать при помощи функции tuple() и передать ей итерируемый объект.
>>> a = tuple([1,2,3])
>>> a
(1, 2, 3)
>>> b = tuple(range(4))
>>> b
(0, 1, 2, 3)
>>> c = tuple('hello')
>>> c
('h', 'e', 'l', 'l', 'o')
>>> d = tuple(1)
Traceback (most recent call last):
File "", line 1, in
d = tuple(1)
TypeError: 'int' object is not iterable
В последнем примере мы переделали в функцию tuple() целое числа, и из-за того что оно не являются итерируемой последовательностью возникла ошибка.
Для создания пустого кортежа нужно поставить пару пустых круглых скобок или вызвать функцию tuple() без параметров:
>>> a = ()
>>> a
()
>>> b = tuple()
>>> b
()
>>> a = (1, 2, 3)
>>> len(a)
3
>>> len(())
0
>>> a = (1, 2, 3)
>>> b = (4, 5)
>>> a+b
(1, 2, 3, 4, 5)
>>> b+a
(4, 5, 1, 2, 3)
>>> a = (1, 2, 3)
>>> a*2
(1, 2, 3, 1, 2, 3)
Кортеж должен состоять из однотипных элементов
>>> a = (21, 32, 9, 10, 30)
>>> min(a)
9
>>> max(a)
32
>>> a = (21, 32, 9, 10, 30)
>>> sum(a)
>>> a = (1, 2, 3)
>>> 2 in a
True
>>> 5 in a
False
>>> 4 not in a
True
>>> a = (1, True, 'hello', 55)
>>> a[1]
True
>>> a[3]
55
>>> a[-2]
'hello'
>>> a = (10, 20, 5, 8, 15, 35)
>>> a[1:3]
(20, 5)
>>> a[2:5]
(5, 8, 15)
Элементы кортежа нельзя изменять. При попытке сделать такое изменение выскачит исключение TypeError.
>>> a = (1, True, 'hello', 55)
>>> a[3]=100
Traceback (most recent call last):
File "", line 1, in
a[3]=100
TypeError: 'tuple' object does not support item assignment
Данный метод принимает обязательный параметр value и возвращает индекс первого элемента слева с таким значением. С помощью необязательных параметров start и finish можно ограничить индексы поиска. В случае если в кортеже нет значения вызывается исключение ValueError.
>>> a = (1, 2, 3, 1, 5)
>>> a.index(1)
0
>>> a.index(1,2)
3
>>> a.index(4)
Traceback (most recent call last):
File "", line 1, in
a.index(4)
ValueError: tuple.index(x): x not in tuple
Данный метод принимает обязательный параметр value и возвращает количество раз появления значения value в кортеже
>>> a
(1, 2, 3, 1, 5)
>>> a.count(1)
2
>>> a.count(4)
0
Обход по значениям элементов
>>> a = (1, True, 'hello', 55)
>>> for i in a:
print(i)
1
True
hello
55
Обход по индексам элементов кортежа
>>> a = (1, True, 'hello', 55)
>>> for i in range(len(a)):
print(a[i])
1
True
hello
55