В глубь языка Python


Кортежи


Кортеж — это неизменяемый список. С момента создания кортеж не может быть изменен никакими способами.

Пример 1.22. Определение кортежей

>>> t = ("a", "b", "mpilgrim", "z", "example")

>>> t ('a', 'b', 'mpilgrim', 'z', 'example') >>> t[0]

'a' >>> t[-1]

'example' >>> t[1:3]

('b', 'mpilgrim')

Кортеж определяется так же, как и список, но элементы перечисляются в круглых скобках вместо квадратных.
Как и в списках, элементы в кортежах имеют определенный порядок. Точно так же нумерация элементов начинается с нуля, то есть первым элементом непустого кортежа всегда является t[0].
Как и для списков, отрицательные индексы позволяют вести отсчет элементов с конца кортежа.
К кортежам, как и к спискам можно применить операцию среза. Обратите внимание, что срез списка — новый список, а срез кортежа — новый кортеж.

Пример 1.23. У кортежей нет методов

>>> t ('a', 'b', 'mpilgrim', 'z', 'example') >>> t.append("new")

Traceback (innermost last): File "<interactive input>", line 1, in ? AttributeError: 'tuple' object has no attribute 'append' >>> t.remove("z")

Traceback (innermost last): File "<interactive input>", line 1, in ? AttributeError: 'tuple' object has no attribute 'remove' >>> t.index("example")

Traceback (innermost last): File "<interactive input>", line 1, in ? AttributeError: 'tuple' object has no attribute 'index' >>> "z" in t

1

Вы не можете добавлять элементы в кортеж. У кортежей нет методов append и extend.
Вы не можете удалять элементы из кортежа. У кортежей нет методов remove и pop.
Вы не можете искать элементы в кортеже с помощью метода index — у кортежей нет такого метода.
Однако, вы можете проверить наличие элемента в кортеже с помощью оператора in.

Так для чего же нужны кортежи?

  • Работа с кортежами быстрее, чем со списками. Если вы определяете постоянный набор значений, и все, что вы хотите с ним когда-либо делать, это перебирать его элементы, используйте кортеж вместо списка.
  • Помните, я сказал, что в качестве могут выступать числа, строки и объекты “некоторых других типов”? Кортежи могут быть ключами словаря, а списки нет.[2]
  • Как мы скоро увидим, кортежи используются для получения форматированного представления.
Кортеж может быть преобразован в список и наоборот. Встроенная функция tuple воспринимает список в качестве аргумента и возвращает кортеж с теми же самыми элементами, и функция list воспринимает кортеж в качестве аргумента и возвращает список. В результате tuple “замораживает” список, а list его “размораживает”.
<
Дополнительная литература

  • обучает работе с кортежами и показывает как .
  • показывает как .
  • объясняет как .


Footnotes

[2] На самом деле все несколько сложнее. Ключи словаря должны быть неизменяемыми. Кортежи сами по себе неизменяемы, но, если у вас имеется кортеж списков, то он считается изменяемым и не может быть использован в качесве ключа словаря. Только кортежи чисел, строк и других таких же кортежей могут быть ключами словаря.

  9  
Copyright © 2000, 2001, 2002

Copyright © 2001, 2002, 2003 Перевод,

Содержание раздела