Кортеж — индексированная последовательность значений, как и список, но в отличии от него, значения в кортеже изменить нельзя.
Создание кортежей
Кортежи создаются в круглых скобках:
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
Зачем вообще пользоваться кортежами, если есть списки?
- Неизменяемость. Если вам нужно, чтобы значения были всегда постоянными.
- Скорость. Кортежи работают быстрее списков (как раз по причине неизменяемости).
- Безопасность. Т.к. в Python нет констант, то использование кортежей в роли констант, дадут требуемую неизменяемость констант.
- Кортежи можно использовать в качестве ключей у словарей.
Индексация и срезы кортежей
Здесь все аналогично спискам.
Индексация кортежей
Индексация элементов начинается с 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
, т.е. список, а не кортеж.