Раймонд Д. Хеттингер отлично говорит ( слайды ) о встроенных коллекциях Python, называемых «Основные контейнеры Python - Под капотом». Версия, которую я видел, фокусировалась, в основном, на set
и dict
, но list
также освещалась.
В блоге .
также есть несколько фотографий соответствующих слайдов с EuroPython.
Вот сводка моих заметок по list
:
- Хранит элементы в виде массива указателей. Индекс стоит O (1) времени. Прибавить затраты амортизированные O (1) раз. Вставка стоит O (n) раз.
- Пытается избежать
memcpy
при росте за счет перераспределения. Многие небольшие списки будут тратить много места, но большие списки никогда не тратят более 12,5% на перераспределение.
- Некоторые операции предварительно настроены. Приведены следующие примеры:
range(n)
, map()
, list()
, [None] * n
и нарезка.
- При сжатии массив
realloc
редактируется только тогда, когда он тратит 50% пространства. pop
дешево.