|
15 / 14 / 2
Регистрация: 24.09.2009
Сообщений: 68
|
|||||||||||
Кэширование малых чисел в Python14.02.2013, 11:49. Показов 6880. Ответов 15
Метки нет (Все метки)
Всем привет!
Есть список, в списке могут содержаться числа от 0 до ~30. Прохожу по списку, поочередно вывожу элементы в текстовый файл. Между элементами должен выводиться разделитель ', ', в конце '; '. Но числа могут повторяться. А я в итоге могу получить в файле строку типа '1; 4, 17, 1; 2, 3, 1;', что естественно меня не устраивает. Но в случае малых чисел переменные ссылаются на один и тот же объект, а значит проверка == и is ничем в плане результата отличаться не будет =(
0
|
|||||||||||
| 14.02.2013, 11:49 | |
|
Ответы с готовыми решениями:
15
Кэширование в psp (Python Server Pages) Вычисление арктангенса малых чисел |
|
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
|
|||
| 14.02.2013, 14:19 | |||
|
Добавлено через 2 минуты
0
|
|||
|
15 / 14 / 2
Регистрация: 24.09.2009
Сообщений: 68
|
|||||
| 14.02.2013, 14:51 [ТС] | |||||
Повторюсь, я знаю как решить проблему с помощью range, но мне интересно, можно ли обойтись без него. Можно считать, что интерес не только теоретический, но и практический - этот элемент программы будет работать в нескольких вложенных циклах при анализе многотысячного списка и не хотелось бы грузить его еще и range-ем
0
|
|||||
|
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
|
|||||||||||||
| 15.02.2013, 03:09 | |||||||||||||
|
если что-то не описано в спецификации, то оно может измениться и написанная программа перестанет правильно работать
1
|
|||||||||||||
|
13 / 14 / 2
Регистрация: 16.02.2010
Сообщений: 99
|
|
| 15.02.2013, 03:39 | |
|
я думаю range не оч. много потянет в производительности, если беспокоитесь о производительности, то лучше пишите код на си, кот. должен быстро работать
0
|
|
|
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
|
||
| 16.02.2013, 14:31 | ||
|
Настораживает, правда, фраза «the current implementation».
0
|
||
|
15 / 14 / 2
Регистрация: 24.09.2009
Сообщений: 68
|
||
| 16.02.2013, 18:29 [ТС] | ||
|
За код спасибо - надо мне получше изучить встроенные функции. 2Nameless One, А почему настораживает? "The current implementation" в Вашей ссылке, наверное, относится к 2.7.3. Для версии, которую использую я, прописано аналогично: http://docs.python.org/release... g_FromLong
0
|
||
|
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
|
||
| 16.02.2013, 18:57 | ||
|
0
|
||
|
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
|
||
| 17.02.2013, 07:04 | ||
|
а теперь представь, что у тебя не одна такая программа, и использован не один такой "хак"
0
|
||
|
3 / 3 / 2
Регистрация: 21.10.2011
Сообщений: 50
|
|
| 17.02.2013, 13:05 | |
|
А зачем такие сложности заложены в языке, неужели так сильно экономит память? Ведь Python ориентирован на лёгкость в применении, а тут такие камни.
0
|
|
|
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
|
|||||||
| 18.02.2013, 02:51 | |||||||
|
для применения можно и не знать про то, что он кеширует числа
0
|
|||||||
|
15 / 14 / 2
Регистрация: 24.09.2009
Сообщений: 68
|
||
| 18.02.2013, 08:58 [ТС] | ||
|
Но даже не это главное, а главное все-таки то, что, по моему скромному убеждению, механику языка знать надо. Иначе, получится "пишу то - не знаю что, не знаю как" - а при таком раскладе напрашивается явно еще и "не знаю зачем". Я, например, иногда жалею, что в программировании я самоучка - несмотря на то, что это было взвешенное решение. Как бы то ни было, знать о таких различиях надо - хотя бы для "общего развития".
0
|
||
|
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
|
||
| 18.02.2013, 09:40 | ||
|
проверять равенство чисел через is - явно неправильно, можешь поинтересоваться в http://mail.python.org/mailman... ython-list
0
|
||
|
15 / 14 / 2
Регистрация: 24.09.2009
Сообщений: 68
|
|||||||||||||
| 18.02.2013, 10:17 [ТС] | |||||||||||||
|
Итак, еще раз. Задача: вывод элементов списка с разделителем ', ', в конце '; '. Про map() я не знаю. Первое и самое элементарное, что мне пришло в голову:
И вот тогда можно было бы заменить проверку равенства на проверку is:
А если бы в списке присутствовали числа со значениями > 256 или < -5, то результирующая строка могла бы приобрести черт знает какой вид. Оно понятно, что через map() все намного проще и заморачиваться на тему кэширования необходимости нет. Но пример такой имеет место быть.
0
|
|||||||||||||
|
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
|
|||||||
| 18.02.2013, 11:22 | |||||||
|
ты хочешь отследить последний элемент списка по его хешу, сравнивая хеш текущего элемента с хешем последнего элемента в списке находятся константы (целочисленные литералы), и код строится на том, как они хранятся, но это дело произвольное (то есть может меняться в разных версиях), поэтому код на их хешах строить нельзя
0
|
|||||||
|
3 / 3 / 2
Регистрация: 21.10.2011
Сообщений: 50
|
||||||
| 18.02.2013, 12:36 | ||||||
|
В шапке была оговорка - не используя range(), так-то понятно.
На счёт знания механики - безусловно нужно. У меня как-то мир поехал, когда copy.copy() сработал некорректно со списком с списке - вложенный список полученного с помощью copy.copy() объекта оказывался тем же вложенным объектом, что и у оригинала:
0
|
||||||
| 18.02.2013, 12:36 | |
|
Помогаю со студенческими работами здесь
16
Сложение малых чисел (меньше 1) Автоматическое (через VBA) преобразование больших и малых чисел в математический формат Это тест Рабина Миллера, но при вводе даже простых малых чисел выводит составное
Кэширование Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Оттенки серого
Argus19 18.03.2026
Оттенки серого
Нашёл в интернете 3 прекрасных модуля:
Модуль класса открытия диалога открытия/ сохранения файла на Win32 API;
Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
|
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога
Финальные проекты на Си и на C++:
finish-rectangles-sdl3-c. zip
finish-rectangles-sdl3-cpp. zip
|
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие.
Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
|
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ВВЕДЕНИЕ
Выполняя задание на управление насосной группой заполнения резервуара,. . .
|
|
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|