с чем?
Ну array есть. Не подходит? Лист можно [None] * l
зачем?
Не нравятся тут лишние накладные расходы на заполнение, но запомню
Пока без конкретных примеров, но раньше мне такая возможность бы не раз пригодилась
если очень надо - то можно класс накидать, который будет это уметь делать )
наследуюешься от класса list и переопределяешь методы
Методы чего? Это ж недоступные со стороны питона части реализации.
а.. ну значит свои пишешь с проверкой длины
Np.array
Лист?
хм.. да вроде нормально переопределяются
Как? Способов управления памятью со стороны питоньих объектов считай и нет. (Костыляния через ctypes не в счёт). Если такое и можно сделать, то это будет какой-нибудь сишный экстеншен. Ну, либо ненадёжный трюк для обмана обычного списка.
Это не так работает вроде. Можно создать класс определив некоторые методы которые присущи list
Ну-ка, как создать np.array длины 0, но с преаллоцированной памятью для 10 элементов?
Ты понимаешь, что такое капасити списка?
И где тут работа с капасити?
Nan его заполнить
Длина 0 как получится?
Речь о размере списка. В CPython это PyListObject->allocated
Да никак нлубость какая то. Надо сразу аллоцмровать
Ты не там оптимизируешь
Так вопрос и был как аллоцировать сразу память под будущий размер, если пока размер будет меньше
Ну это норма, когда заранее известен итоговый размер списка, и не хочется тратить время на реаллокации
Отнаследуйся от списка, переопредели len. Разреши, например, только аппенд
Ну да. И как тут поможет np.array.
Или даже не наследник, а обертку. Что после завершения работы внутренний список отдать
С чего ты взял
Потому что кишки не оптимизируют. Уже тогда брать другой язык
В других языках прямое определение capacity часто в api коллекций торчит наружу. В питоне это пригодилось бы для бенчмаркинга, например.
Мне кажется такие оптимизации сделают только хуже. Питон так устроен
Не вижу, почему мне от этого стало бы хуже.
1. Так устроен CPython. 2. Всякие выскоуровневые штуки уже имеют эти оптимизации. Никакого криминала, "делающего питон хуже" я тут что-то не вижу. Вот с реализуемостью вопросы есть, да.
Обсуждают сегодня