Понятие кортежей очень выразительно:
Практично, они являются великими для упаковки и распаковки значений (x,y=coord
).
В сочетании со словарями (хэш-таблицы), они позволяют формы отображения, которое иначе потребовало бы многих уровней ассоциации. Например, рассмотрите маркировку, которая (x, y) была найдена.
// PHP
if (!isset($found[$x])) {
$found[$x] = Array();
$found[$x][$y] = true;
} else if (!isset($found[$x][$y])) {
$found[$x][$y] = true;
}
# Python
found[(x,y)] = True # parens added for clarity
Списки должны использоваться с ожиданием операций на его содержании (следовательно различные упоминания о неизменности). Каждый захочет вытолкать, продвинуть, соединить, резать, искать, вставить прежде, вставить после, и т.д. со списком.
Кортежи должны быть представлением низкого уровня объекта, где простые сравнения сделаны, или операции, такие как извлечение n'th элемента или n элементов предсказуемым способом, таких как пример координат, данный ранее.
Наконец, списки не hashable, таким образом, тип отображения сделанного со словарями (хэш-таблицы в Perl, ассоциативные массивы в PHP) должен быть сделан с кортежами.
Вот простой пример кортежей и словарей, вместе наконец:
"""
couple is a tuple of two people
doesLike is a dictionary mapping couples to True or False
"""
couple = "john", "jane"
doesLike = dict()
doesLike[couple] = True
doesLike["jane", "john"] = False # unrequited love :'(