tuple (кортеж)
Кортеж — неизменяемая последовательность с упорядоченными элементами.
Элементами кортежей могут выступать любые объекты.
В коде кортежи могут быть объявлены при помощи скобок —
Имеёте в ввиду того, что запятую в таких случаях относительно легко пропустить при чтении.
Кроме того, можно объявить их при помощи конструктора
Два картежа сравниваются лексикографически: считаются равными, если имеют одинаковую длину и равны их соответствующие элементы:
Пустой кортеж — это глобально уникальный объект. Таким образом, все пустые кортежи — это один и тот же объект, а значит и адрес в памяти у таких кортежей один.
Объявление
В коде кортежи могут быть объявлены при помощи скобок —
()
— внутри скобок через запятую перечисляются элементы в нужной последовательности. Если кортеж состоит из одного элемента при объявлении требуется поставить запятую после этого элемента. Имеёте в ввиду того, что запятую в таких случаях относительно легко пропустить при чтении.
my_empty_tuple = ()
my_tuple = 1, 'some', 3.5 # то же, что и (1, 'some', 3.5)
my_tuple = 'a', # то же, что и ('a',)
Кроме того, можно объявить их при помощи конструктора
tuple()
, в качестве аргумента которому можно передать последовательность или объект, поддерживающий итерирование (включая генераторы). Если аргументом указан кортеж, то он и будет возвращён без изменений. tuple() # ()
tuple('abc') # ('a', 'b', 'c')
tuple([1, 2, 3]) # (1, 2, 3)
Сравнение
Два картежа сравниваются лексикографически: считаются равными, если имеют одинаковую длину и равны их соответствующие элементы:
a = (3, 2, 1)
b = (1, 2, 3)
d = (3, 2, 2)
e = (3, 2)
f = (3, 2, 'a')
a > b # True
a > d # False
d > b # True
a > e # True
# Python 3
a > f # TypeError: '>' not supported between instances of 'int' and 'str'
# Python 2
a > f # False
Детали реализации CPython
Пустой кортеж — это глобально уникальный объект. Таким образом, все пустые кортежи — это один и тот же объект, а значит и адрес в памяти у таких кортежей один.
a = ()
b = ()
a is b # True
id(a) == id(b) # True
На заметку
При удалении кортежа (например, с помощью del, или сборщика мусора) небольшой длины (не более 19 элементов), он не удалется сразу, а перемещается в очередь удаления. Эта очередь имеет 20 групп, в каждую из которых помещаются удалённые кортежи соответствующей длины, причём в первой группе хранится пустой кортеж.
tuple_0 = (1, 2, 3)
print('tuple_0 %s' % id(tuple_0)) # 140332152236648
tuple_1 = (1, 2, 3)
print('tuple_1 %s' % id(tuple_1)) # 140332152236720
del tuple_1
# Далее предполагается, что сборка мусора уже прошла.
# Проще всего наблюдать за работой из интерактивного сеанса
# интерпретатора.
tuple_2 = (1, 2, 4)
print('tuple_2 %s' % id(tuple_2)) # 140332152236720
Синонимы поиска: tuple (кортеж), кортеж, кортежи, cortege, typle, тупл
В разделе «Sequence (последовательность)»:
list (список)
range (диапазон)
sequence.index
str (строка)
xrange
На заметку
У нас есть представительство во ВКонтакте. Ссылка в самом низу страницы.