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

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

36 ответов

36 просмотров

с чем?

Ну 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. Всякие выскоуровневые штуки уже имеют эти оптимизации. Никакого криминала, "делающего питон хуже" я тут что-то не вижу. Вот с реализуемостью вопросы есть, да.

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта