Это пример списков Python:
my_list = [0,1,2,3,4]
top_rock_list = ["Bohemian Rhapsody","Kashmir","Sweet Emotion", "Fortunate Son"]
Это пример кортежа Python:
my_tuple = (a,b,c,d,e)
celebrity_tuple = ("John", "Wayne", 90210, "Actor", "Male", "Dead")
Списки и кортежи Python похожи в том, что они оба являются упорядоченными коллекциями значений. Помимо небольшой разницы в том, что списки создаются с использованием скобок «[..., ...]» и кортежей с использованием скобок «(..., ...)», основное техническое отличие «жестко запрограммировано в синтаксисе Python» между ними заключается в том, что элементы определенного кортежа являются неизменяемыми, тогда как списки являются изменяемыми (... поэтому только кортежи могут быть хэшируемыми и могут использоваться в качестве словарных / хэш-ключей!). Это приводит к различиям в том, как они могут или не могут быть использованы (применены априори с помощью синтаксиса), и к различиям в том, как люди выбирают их использование (поощряется как «лучшие практики», апостериори, это то, что умный *) 1008 * программисты делают). Основное отличие апостериорной дифференциации использования кортежей от использования списков заключается в том, что означает , которые люди придают порядку элементов.
Для кортежей «порядок» означает не что иное, как определенную «структуру» для хранения информации. Какие значения находятся в первом поле, можно легко переключить во второе поле, поскольку каждое из них предоставляет значения в двух разных измерениях или масштабах. Они дают ответы на различные типы вопросов и обычно имеют форму: для данного объекта / субъекта, каковы его атрибуты? Объект / субъект остается постоянным, атрибуты различаются.
Для списков «порядок» означает последовательность или направленность. Второй элемент ДОЛЖЕН идти после первого элемента, поскольку он расположен на 2-м месте в зависимости от определенной и общей шкалы или измерения. Элементы взяты как единое целое и в основном дают ответы на один вопрос, обычно в форме, для данного атрибута, как эти объекты / субъекты сравниваются? Атрибут остается постоянным, объект / субъект отличается.
Существует бесчисленное множество примеров людей в популярной культуре и программистов, которые не соответствуют этим различиям, и есть бесчисленное множество людей, которые могут использовать вилку для салата в качестве основного блюда. В конце концов, все в порядке, и оба обычно могут выполнить свою работу.
Подводя итог некоторым мельчайшим деталям
Сходства:
- Дубликаты - И кортежи, и списки допускают дубликаты
Индексирование, выбор и нарезка - И кортежи, и списки индексируются с использованием целочисленных значений, указанных в скобках. Таким образом, если вы хотите первые 3 значения данного списка или кортежа, синтаксис будет таким же:
>>> my_list[0:3]
[0,1,2]
>>> my_tuple[0:3]
[a,b,c]
Сравнение и сортировка - Два кортежа или два списка сравниваются по первому элементу, и если есть связь, то по второму элементу и так далее. Дальнейшее внимание не уделяется последующим элементам после того, как более ранние элементы показывают разницу.
>>> [0,2,0,0,0,0]>[0,0,0,0,0,500]
True
>>> (0,2,0,0,0,0)>(0,0,0,0,0,500)
True
Различия: - Априори по определению
Синтаксис - Использование списков [], использование кортежей ()
Изменчивость - Элементы в данном списке являются изменяемыми, элементы в данном кортеже НЕ являются изменяемыми.
# Lists are mutable:
>>> top_rock_list
['Bohemian Rhapsody', 'Kashmir', 'Sweet Emotion', 'Fortunate Son']
>>> top_rock_list[1]
'Kashmir'
>>> top_rock_list[1] = "Stairway to Heaven"
>>> top_rock_list
['Bohemian Rhapsody', 'Stairway to Heaven', 'Sweet Emotion', 'Fortunate Son']
# Tuples are NOT mutable:
>>> celebrity_tuple
('John', 'Wayne', 90210, 'Actor', 'Male', 'Dead')
>>> celebrity_tuple[5]
'Dead'
>>> celebrity_tuple[5]="Alive"
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
Хеш-таблицы (словари) - Поскольку хеш-таблицы (словари) требуют, чтобы его ключи были хешируемыми и, следовательно, неизменяемыми, только кортежи могут выступать в качестве словарных ключей, а не списков.
#Lists CAN'T act as keys for hashtables(dictionaries)
>>> my_dict = {[a,b,c]:"some value"}
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'
#Tuples CAN act as keys for hashtables(dictionaries)
>>> my_dict = {("John","Wayne"): 90210}
>>> my_dict
{('John', 'Wayne'): 90210}
Различия - A posteriori, в использовании
Гомо и гетерогенность элементов - Как правило, объекты списка являются однородными, а объекты кортежей неоднородными. То есть списки используются для объектов / субъектов одного и того же типа (как и все кандидаты в президенты, или все песни, или все бегуны), в то время как хотя это не навязывается), тогда как кортежи больше предназначены для разнородных объектов.
Циклы и структуры - Хотя оба позволяют цикл (для x в my_list ...), это действительно имеет смысл сделать для списка. Кортежи больше подходят для структурирования и представления информации (% s% s, находящийся в% s, является% s и в настоящее время% s% ("Джон", "Уэйн", 90210, "Актер", "Мертвый"))