170 похожих чатов

Можно ли в питоне создать пустой лист с заданным capacity?

36 ответов

17 просмотров

с чем?

Ну array есть. Не подходит? Лист можно [None] * l

зачем?

Evgeniy-Blinov Автор вопроса

Не нравятся тут лишние накладные расходы на заполнение, но запомню

Evgeniy-Blinov Автор вопроса
Andrew Deskent
зачем?

Пока без конкретных примеров, но раньше мне такая возможность бы не раз пригодилась

Evgeniy Blinov
Пока без конкретных примеров, но раньше мне такая ...

если очень надо - то можно класс накидать, который будет это уметь делать )

Evgeniy Blinov
А как?

наследуюешься от класса list и переопределяешь методы

Andrew Deskent
наследуюешься от класса list и переопределяешь мет...

Методы чего? Это ж недоступные со стороны питона части реализации.

а.. ну значит свои пишешь с проверкой длины

Np.array

Ded
Np.array

Лист?

evle
Методы чего? Это ж недоступные со стороны питона ч...

хм.. да вроде нормально переопределяются

Andrew Deskent
а.. ну значит свои пишешь с проверкой длины

Как? Способов управления памятью со стороны питоньих объектов считай и нет. (Костыляния через ctypes не в счёт). Если такое и можно сделать, то это будет какой-нибудь сишный экстеншен. Ну, либо ненадёжный трюк для обмана обычного списка.

Andrew Deskent
наследуюешься от класса list и переопределяешь мет...

Это не так работает вроде. Можно создать класс определив некоторые методы которые присущи list

Ded
Np.array

Ну-ка, как создать np.array длины 0, но с преаллоцированной памятью для 10 элементов?

Andrew Deskent
хм.. да вроде нормально переопределяются

Ты понимаешь, что такое капасити списка?

Ded
Nan его заполнить

Длина 0 как получится?

Andrew Deskent
хм.. да вроде нормально переопределяются

Речь о размере списка. В CPython это PyListObject->allocated

Tishka17
Длина 0 как получится?

Да никак нлубость какая то. Надо сразу аллоцмровать

Ded
Да никак нлубость какая то. Надо сразу аллоцмроват...

Так вопрос и был как аллоцировать сразу память под будущий размер, если пока размер будет меньше

Tishka17
Так вопрос и был как аллоцировать сразу память под...

Ну это норма, когда заранее известен итоговый размер списка, и не хочется тратить время на реаллокации

Evgeniy Blinov
Не нравятся тут лишние накладные расходы на заполн...

Отнаследуйся от списка, переопредели len. Разреши, например, только аппенд

Tishka17
Отнаследуйся от списка, переопредели len. Разреши,...

Или даже не наследник, а обертку. Что после завершения работы внутренний список отдать

Evgeniy-Blinov Автор вопроса
Evgeniy Blinov
С чего ты взял

Потому что кишки не оптимизируют. Уже тогда брать другой язык

Evgeniy-Blinov Автор вопроса
Patrick [in search of work]
Потому что кишки не оптимизируют. Уже тогда брать ...

В других языках прямое определение capacity часто в api коллекций торчит наружу. В питоне это пригодилось бы для бенчмаркинга, например.

Evgeniy Blinov
В других языках прямое определение capacity часто ...

Мне кажется такие оптимизации сделают только хуже. Питон так устроен

Evgeniy-Blinov Автор вопроса
Patrick [in search of work]
Мне кажется такие оптимизации сделают только хуже....

1. Так устроен CPython. 2. Всякие выскоуровневые штуки уже имеют эти оптимизации. Никакого криминала, "делающего питон хуже" я тут что-то не вижу. Вот с реализуемостью вопросы есть, да.

Похожие вопросы

Обсуждают сегодня

А как старый хаскел с новым стыковать ? потому как тут работает https://play.haskell.org/saved/C3xpMzcd, а вот тут https://stepik.org/lesson/7602/step/9?unit=1473 нет ошибка C...
Fedor
131
что насчет пагинга? на осдеве непонятно(
Vi Chapmann 🪙
26
Вопрос я правильно понимаю что в коде newtype ArrowMap k v = ArrowMap { getArrowMap :: k -> Maybe v } getArrowMap есть функция типа k -> Maybe v, если да, то не понимаю задач...
Fedor
64
Ребят, что лучше для реверса: гидра или ида?
En Vind Av Sorg
26
Делаю велосипед логгер. К сообщению хочу прикрутить некоторую информацию, типа, кем отправлено, какой уровень, и всякое такое. И тут подумалось мне, почему бы не хранить весь...
Serjone
24
Как Вы считаете нормально ли в двадцатых годах 21 века в ВУЗах Российской Федерации обучать студентов работе с TASM? Не слишком ли это "архаично"? (Если оффтоп или флейм для э...
Spiker01
52
Комрады, хотел уточнить. Проперть в OnDestroy юнита-хозяина по-прежнему доступна? И еще уточнение: finalization юнита наступает раньше или позже OnDestroy?
Ed Doc
48
если загрузчик efi? если сама PML4 PDPT PDT PT лежит в неудобном для меня месте?
Vi Chapmann 🪙
8
Продолжая диалог про свифт в проде – сейчас возник вопрос в активном наборе бекендеров. В основном в нашей компании мы фанаты Java Spring и полностью ей довольны. Однако найм ...
Guseyn
27
Читаю сейчас [нет, уже больше не читаю!] курсовую о Булгакове, написанную, похоже, с помощью ChatGPT. Это удивительный психоделический опыт. Текст в основном написан в стиле б...
✨ Uni [🌊 В отпуске]
1
Карта сайта