Кортеж — индексированная последовательность значений, как и список, но в отличии от него, значения в кортеже изменить нельзя.
Кортежи создаются в круглых скобках:
my_tuple = (1, 2, 3, 4, 5)
my_tuple_2 = ('один', 'два', 'три', 'четыре', 'пять')
print(my_tuple)
print(my_tuple_2)
#(1, 2, 3, 4, 5)
#('один', 'два', 'три', 'четыре', 'пять')
Также можно делать запись и без скобок, просто перечисляя последовательность:
my_tuple = 1, 2, 3, 4, 5
print(my_tuple)
#(1, 2, 3, 4, 5)
Тип данных:
my_tuple = (1, 2, 3, 4, 5)
print(type(my_tuple))
#<class 'tuple'>
Так, как кортеж не изменяемая последовательность, то если попытаться изменить значение в кортеже, то будет ошибка:
my_tuple = (1, 2, 3, 4, 5)
my_tuple[1] = 10
#builtins.TypeError: 'tuple' object does not support item assignment
Зачем вообще пользоваться кортежами, если есть списки?
Здесь все аналогично спискам.
Индексация элементов начинается с 0:
+---+---+---+---+---+---+
| p | y | t | h | o | n |
+---+---+---+---+---+---+
0 1 2 3 4 5
-6 -5 -4 -3 -2 -1
my_tuple = ('один', 'два', 'три', 'четыре', 'пять!')
print(my_tuple[0])
print(my_tuple[2])
print(my_tuple[-1])
#один
#три
#пять!
Формула среза в кортежах, такая же, как и в списках X[I:J:Step]
.
Извлечь все содержимое кортежа Х
, начиная со смещения I
до смещения J
, не включая его, с шагом Step
.
my_tuple = ('один', 'два', 'три', 'четыре', 'пять!')
print(my_tuple[1:4])
print(my_tuple[1:])
print(my_tuple[:3])
print(my_tuple[::2])
#('два', 'три', 'четыре')
#('два', 'три', 'четыре', 'пять!')
#('один', 'два', 'три')
#('один', 'три', 'пять!')
my_tuple = ('один', 'два', 'три', 'четыре', 'пять!')
print(my_tuple[::-1])
#('пять!', 'четыре', 'три', 'два', 'один')
my_tuple_1 = (1,2,3,4)
my_tuple_2 = (5,6,7,8)
my_tuple_3 = my_tuple_1 + my_tuple_2
print(my_tuple_3)
#(1, 2, 3, 4, 5, 6, 7, 8)
my_tuple_1 = ('один', 'два', 'три')
my_tuple_2 = ('четыре', 'пять')
my_tuple_3 = my_tuple_1 + my_tuple_2
print(my_tuple_3)
#('один', 'два', 'три', 'четыре', 'пять')
my_tuple_1 = (1, 2, 3)
my_tuple_2 = my_tuple_1 * 2
print(my_tuple_2)
#(1, 2, 3, 1, 2, 3)
my_tuple_1 = ('один', 'два', 'три')
my_tuple_2 = my_tuple_1 * 3
print(my_tuple_2)
#('один', 'два', 'три', 'один', 'два', 'три', 'один', 'два', 'три')
my_tuple = (1, 2, 3)
(a, b, c) = my_tuple
print(a)
print(b)
print(c)
#1
#2
#3
Здесь два кортежа, один с переменными, второй со значениями переменных. Переменным из кортежа присваиваем значения из значения из первого кортежа my_tuple
.
Т.к. кортежи неизменяемы, то у них нет многих методов, которые есть у списков. Рассмотрим наиболее часто употребляемые методы кортежей.
Длина кортежа: len(t)
my_tuple_1 = (1, 2, 3)
print(len(my_tuple_1))
#3
Количество элементов х в кортеже: tuple.count(x)
my_tuple_1 = (1, 2, 3, 1)
print(my_tuple_1.count(1))
#2
Найти индекс элемента x: tuple.index(x[, start[, end]])
Необязательные аргументы start
и end
, указывают на промежуток поиска:
my_tuple = (1, 2, 3, 4, 5)
print(my_tuple.index(4))
#3
my_tuple = ('один', 'два', 'три', 'четыре', 'пять')
print(my_tuple.index('три', 1, 3))
#2
Если элемента нет в списке:
my_tuple = ('один', 'два', 'три', 'четыре', 'пять')
print(my_tuple.index('шесть'))
#builtins.ValueError: tuple.index(x): x not in tuple
Преобразование данных в кортеж: tuple()
Преобразуем список в кортеж:
my_list = ['один', 'два', 'три', 'четыре', 'пять']
my_tuple = tuple(my_list)
print(my_tuple)
print(type(my_tuple))
#('один', 'два', 'три', 'четыре', 'пять')
#<class 'tuple'>
Максимальное значение в кортеже: max()
my_tuple = (1, 2, 3, 4, 5)
print(max(my_tuple))
#5
Минимальное значение в кортеже: min()
my_tuple = (1, 2, 3, 4, 5)
print(min(my_tuple))
#1
Сумма элементов кортежа: sum()
Работает только для числовых данных:
my_tuple = (1, 2, 3, 4, 5)
print(sum(my_tuple))
#15
Сортировка элементов кортежа: sorted()
my_tuple = (3, 1, 2, 4, 5)
sort = sorted(my_tuple)
print(sort)
print(type(sort))
#[1, 2, 3, 4, 5]
#<class 'list'>
Но важно заметить, что после сортировки тип будет уже list
, т.е. список, а не кортеж.
Содержание: