Кортежи (tuple)
Кортеж, по сути - неизменяемый список.
Зачем нужны кортежи, если есть списки?
-
Кортеж защищен от изменений, как намеренных (что плохо), так и случайных (что хорошо).
-
Меньший размер. Дабы не быть голословным:
>>> a = (1, 2, 3, 4, 5, 6) >>> b = [1, 2, 3, 4, 5, 6] >>> a.__sizeof__() 36 >>> b.__sizeof__() 44
-
Возможность использовать кортежи в качестве ключей словаря:
>>> d = {(1, 1, 1) : 1} >>> d {(1, 1, 1): 1} >>> d = {[1, 1, 1] : 1} Traceback (most recent call last): File "", line 1, in d = {[1, 1, 1] : 1} TypeError: unhashable type: 'list'
Как работать с кортежами?
Примерно так же, как и со списками.
Создаем пустой кортеж:
>>> a = tuple() # С помощью встроенной функции tuple()
>>> a
()
>>> a = () # С помощью литерала кортежа
>>> a
()
>>>
Создаем кортеж из одного элемента:
>>> a = ('s')
>>> a
's'
Получилась строка.
>>> a = ('s', )
>>> a
('s',)
Все дело - в запятой. Сами по себе скобки ничего не значат, точнее, значат то, что внутри них находится одна инструкция, которая может быть отделена пробелами и переносом строк. Кстати, кортеж можно создать и так:
>>> a = 's',
>>> a
('s',)
Но бывают случаи, когда скобки необходимы.
Ну и создать кортеж из итерируемого объекта можно с помощью все той же пресловутой функции tuple()
>>> a = tuple('hello, world!')
>>> a
('h', 'e', 'l', 'l', 'o', ',', ' ', 'w', 'o', 'r', 'l', 'd', '!')
Операции с кортежами
Все операции над списками, не изменяющие список (сложение, умножение на число, методы index() и count() и некоторые другие операции). Можно также по-разному менять элементы местами и так далее.
Например - поменять местами значения двух переменных:
a, b = b, a