Я некоторое время знал, что основное различие между списками и кортежами в Python состоит в том, что списки изменяемы, а кортежи - нет. Помимо этого и различных доступных им методов, я очень мало знаю о списках и кортежах. Есть ли другая разница между ними? Есть ли любые преимущества/недостатки (помимо неизменности) в использовании кортежа над списком в Python 3? Имеет ли более быстрое время доступа или имеет меньший размер памяти или содержит больше методов, чем другой? Являются ли их внутренние структуры разными? Или кортеж просто неизменный список, не более?Разница между списком и кортежем (минус неизменяемость) в Python?
ответ
Оба списка и кортежи внутренне реализованы как массивы ссылок на объекты элемента. Таким образом, оба индекса могут быть проиндексированы и оба требуют одинаковый объем памяти для каждого элемента. Внутри они оба однородны (нетипизированные ссылки). Логично, что они являются гетерогенными (автоматическое разыменование, тип привязан к целевому объекту).
Список может быть изменен, поэтому внутренний массив является динамическим массивом. Кортеж не может быть изменен, поэтому он представляет собой только массив фиксированного размера. С этой точки зрения кортежи проще.
Для этого скорость или нет, вы можете измерить конкретную ситуацию с помощью модуля timeit.
Вы должны знать, что кортежи неизменяемы только по отношению к числу и значениям хранимых ссылок. Если (скажем) список используется как один из элементов кортежа, содержимое списка может быть изменено. Таким образом, логически, содержимое кортежа не является постоянным (такой набор не хешируется).
Использовать любой тип лучше для этой цели. Нет строгого предпочтения. Это зависит от ситуации.
Выполнить каталог на обоих из них - довольно другой список методов (поп показано ниже). кортежи могут быть быстрее
>>> alist = [1,2,3]
>>> atuple = (1,2,3)
>>> alist.pop()
3
>>> atuple.pop()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'tuple' object has no attribute 'pop'
«Append», «счетчик», «простираться», «индекс», «вставить», «поп», «удалить», «обратный», «вроде» все доступны для списки, а не кортежи - что имеет смысл, учитывая идею непреложности.
Философски, некоторые люди ожидают, что списки будут однородными и не будут иметь ожиданий кортежей.
Существуют ли какие-либо внутренние различия в типы, такие как структура или кодирование? – fouric
Если вы имеете в виду строковое кодирование, то это не имеет отношения к кортежам. Кодировка - это всего лишь способ преобразования абстрактной строки в конкретную последовательность байтов. Когда кортеж содержит строковый элемент, строковый объект создается вне кортежа. Элемент кортежа относится только к объекту (нетипизированная ссылка). То же самое происходит как с элементом набора, так и с элементом списка. – pepr
- 1. Есть ли разница между списком и кортежем?
- 2. Разница между списком и кортежем в Erlang
- 3. Haskell: Между списком и кортежем
- 4. В чем разница между обратным кортежем и перевернутым списком?
- 5. Разница между списком и стеком в python?
- 6. Разница между кортежем и множеством в mdx
- 7. В чем разница между кортежем и сжатым_паре?
- 8. В Python, в чем разница между пониманием списка со списком и кортежем?
- 9. Что происходит при преобразовании между кортежем/списком?
- 10. В чем разница между списком и списком [:] в python?
- 11. Разница между списком() и [:]
- 12. python: разница между списком (dict) и dict.keys()?
- 13. Какая разница между списком() и []
- 14. разница между списком и списком <?>
- 15. Разница между списком и перечислением
- 16. Разница между bytearray и списком
- 17. разница между списком и массивом
- 18. Разница между вектором и списком
- 19. Разница между массивом и списком
- 20. В чем разница между списком + = str и списком + = str,
- 21. Разница между '(()) и (минус null null)
- 22. В чем разница между итерируемым и списком в python 3?
- 23. В чем разница между списком и итератором в Python?
- 24. Неизменяемость в Python
- 25. Разница между массивом numpy и многомерным списком в Python?
- 26. Разница между списком, последовательностью и фрагментом в Python?
- 27. разница между списком дат
- 28. разница между списком списков
- 29. разница между [] и списком() в python3
- 30. Разница между списком и [] в F #
Возможный дубликат [В чем разница между списком и кортежами?] (Http://stackoverflow.com/questions/626759/whats-the-difference-between-list-and-tuples) –