Алла Тамбовцева, НИУ ВШЭ
Кортежи встречаются не только в программировании, но и в математике. В математике под кортежем обычно понимают упорядоченную совокупность элементов, то есть совокупность, порядок элементов которой фиксирован. В кортеже мы точно знаем, какой элемент является первым, какой – вторым, и так далее.
Внешне кортежи несильно отличаются от списков. Единственное внешнее отличие – элементы кортежа заключаются в круглые, а не в квадратные скобки.
my_tuple = (1, 2, 4, 6, 9)
К элементам кортежа можно обращаться точно так же, как к элементам списка:
my_tuple[0]
1
Но, несмотря на кажущееся сходство, кортежи и списки – принципиально разные объекты. Главное отличие кортежей от списков заключается в том, что кортежи – неизменяемые объекты. Другими словами, изменять элементы кортежа нельзя. Проверим:
my_tuple[0] = 10
--------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-3-a0083389ad43> in <module>() ----> 1 my_tuple[2] = 65 TypeError: 'tuple' object does not support item assignment
Иногда это свойство бывает полезным (некоторая «защита» от изменений), иногда – не очень, но для нас пока важно познакомиться с разными объектами в Python, чтобы потом не удивляться. Ведь многие более продвинутые функции могут возвращать результат или, наоборот, принимать на вход только кортежи или только списки.
При желании кортеж можно превратить в список:
list(my_tuple)
[1, 2, 4, 6, 9]
И наоборот:
tuple([1, 2, 3])
(1, 2, 3)
Если посмотреть на методы, применяемые к кортежам (например, набрать my_tuple.
и нажать Tab), то можно заметить, что методов для кортежей сильно меньше по сравнению с методами для списков. Во многом это связано с тем, что кортеж нельзя изменить. Но вот «склеивать» кортежи, создавая при этом новый, легко:
(1, 3) + (7, 8)
(1, 3, 7, 8)