Вот не могу понять, зачем Питону - языку с динамической типизацией нужны одновременно и списки и кортежи? Ведь основное различие между ними это то, что списки представляют гомомогенное множество, а кортежи - гетерогенное. К тому же часто бывает, что кортежи в отличии от списков иммутабельны.
В питоне же, что списки, что кортежи являются гетерогенными множествами, которые к тому же можно динамически изменять.
Зачем вводить лишние сущности? Может их того... бритвой товарища Оккама?
Subscribe to:
Post Comments (Atom)
5 comments:
Забавно, я думал что кортежи в петоне менять нельзя, теперь тоже в раздумьях %)
Еще логичный вариант мог быть если б списки были натуральными списками внутри (std::list), а кортежи чем-то типа std::vector, но в данном случае это тоже не работает..
У меня такое ощущение, что разница исключительно семантическая. То есть кортежи это множества аргументов, параметров и возвращаемых значений заключённые в одну сущность. То есть кортеж это multimum in parvo - множество в одном.
А список это просто множество каких-то значений, с которым надо работать как со множеством. Тут нет такого акцентирования на то, что это единая сущность, как в случае с кортежом.
А физическая реализация у них может быть вполне идентичной.
Кортежи неизменяемы, и вроде могут быть быстрее.
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
Post a Comment