Monday, April 21, 2008

списки и кортежи

Вот не могу понять, зачем Питону - языку с динамической типизацией нужны одновременно и списки и кортежи? Ведь основное различие между ними это то, что списки представляют гомомогенное множество, а кортежи - гетерогенное. К тому же часто бывает, что кортежи в отличии от списков иммутабельны.
В питоне же, что списки, что кортежи являются гетерогенными множествами, которые к тому же можно динамически изменять.
Зачем вводить лишние сущности? Может их того... бритвой товарища Оккама?

5 comments:

lrrr said...

Забавно, я думал что кортежи в петоне менять нельзя, теперь тоже в раздумьях %)

Еще логичный вариант мог быть если б списки были натуральными списками внутри (std::list), а кортежи чем-то типа std::vector, но в данном случае это тоже не работает..

CyberZX said...

У меня такое ощущение, что разница исключительно семантическая. То есть кортежи это множества аргументов, параметров и возвращаемых значений заключённые в одну сущность. То есть кортеж это multimum in parvo - множество в одном.

А список это просто множество каких-то значений, с которым надо работать как со множеством. Тут нет такого акцентирования на то, что это единая сущность, как в случае с кортежом.

А физическая реализация у них может быть вполне идентичной.

Mikhail said...

Кортежи неизменяемы, и вроде могут быть быстрее.

nerinossa said...

myod said...

Python 2.5.2

>>>tuple=(1,2,3)
>>>tuple[0]
1
>>>tuple[0]=4
Traceback (most recent call last):
File "stdin", line 1, in module
TypeError: 'tuple' object does not support item assignment

И да, по этому поводу обещается, что он работает быстрее.

Кстати, паранойя с "непущанием" "тегов" не радует: пришлось убрать "<" и ">" у stdin и module