Кортежи в Python

Кортежи (tuple) в Python: основные методы и функции

Кортеж — индексированная последовательность значений, как и список, но в отличии от него, значения в кортеже изменить нельзя.

Создание кортежей

Кортежи создаются в круглых скобках:

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, т.е. список, а не кортеж.

Содержание: