память под новый массив в случае нехватки физического размера массива? И массив с каким размером создаётся при нехватке физического размера в другом?
знает кто?
я не хочу)) просто можно ли это вообще, вот что интересно
В питоне без лютых извращений либо сишного модуля — нет.
понятно, спасибо, с другой стороны, ведь алгоритм списков такой же? в плане про выделение памяти в несколько раз больше, под капотом имею ввиду
Ну список реализован как динамически расширяемый массив ссылок под капотом
Не уверен насчёт 2-3 раз. Насколько помню, там для маленьких списков быстрый рост, а потом пропорционально (типа *9/8) или что-то такое. Где-то была статья с алгоритмом.
просто мне кажется, что эта тема важная
Смотря для чего. Как пользователя тебя чаще всего это волновать не должно. Для каких-то очень хитрых оптимизаций разве что полезно знать.
ну, раз взялся типо за алгоритмы и структуры, то лучше уж и это изучить
Да, в целом тот факт что под список выделяются куски памяти несколько больше, чем там элементов и размер наращивается постепенно копированием — знать надо. Как именно это делается — опционально. Это деталь реализации и основываться как-то на ней нельзя.
как раз в следующем видео про это уже говорится) раньше у меня было чёткое определение, что списки содержат в себе разные типы данных, теперь понял, что всё же списки тоже содержат в себе 1 тип, это ссылки на объекты, как ты и сказал
Нуу... тут надо понимать в каком контексте мы рассматриваем список. Если с точки зрения аннотаций типов, то список может содержать разные типы данных. Если с точки зрения низкоуровневой реализации, то мы говорим про ссылки.
Называть "ссылки на объекты" одним типом — это несколько непродуктивно в плане питона. Таки списки действительно могут содержать значения любого типа, но часто если там оказались сильно разные типы — это ошибка проектирования.
Обсуждают сегодня