В вашем коде я предполагаю, что поле «creationTime» - это дата, конвертированная в секунды, поэтому я основал свою реализацию на этом. Вот быстрый код для обновления меток времени с учетом требования:
from datetime import datetime, timedelta
data = [{"creationTime": 1543647600000,"id":1},
{"creationTime": 1543647600000,"id":2},
{"creationTime": 1543647600000,"id":3}]
day_start = 9
for tuple in data:
print('Previous: ' , tuple['creationTime'])
tuple['creationTime'] -= int(timedelta(days = day_start).total_seconds())
day_start -= 2
print('After: ', tuple['creationTime'])
Это то, что я понял из вопроса, если что-то не так, как вы хотели, пожалуйста, прокомментируйте, и я постараюсь смотреть.
Оптимизация является очень широким термином. В целом это подразумевает изменение системы для создания части ее аспекта, чтобы работать более эффективно или использовать меньше ресурсов или быть более устойчивым. Например, компьютерная программа может быть оптимизирована так, чтобы она выполнилась быстрее или использовала меньше памяти или памяти на диске или была более быстро реагирующей с точки зрения UI.
Хотя "оптимизация" имеет тот же корень как "оптимальный", процесс оптимизации не создает полностью оптимальную систему: всегда существует компромисс, поэтому только атрибуты большого интереса оптимизированы.
И помните:
Первое Правило Оптимизации Программы: не делайте этого. Второе Правило Оптимизации Программы (для экспертов только!): еще не делайте этого. (Michael A. Jackson)
Оптимизация является процессом изменения системы, чтобы сделать некоторый аспект из него работой более эффективно или использовать меньше ресурсов.
В Вашем случае относится главным образом к 2 уровням:
Уровень дизайна
На высшем уровне дизайн может быть оптимизирован для лучшего использования имеющиеся ресурсы. Реализация этого дизайна извлечет выгоду из хорошего выбора эффективных алгоритмов, и реализация этих алгоритмов извлечет выгоду из написания кода хорошего качества. Архитектурный проект системы в подавляющем большинстве влияет на свою производительность. Выбор алгоритма влияет на эффективность больше, чем какой-либо другой объект дизайна. В некоторых случаях, однако, оптимизация полагается на использование более необычных алгоритмов, использование особых случаев и специальных приемов и выполнения сложных компромиссов; таким образом полностью оптимизированная программа иногда может, если недостаточно прокомментировано, быть более трудной для менее опытных программистов постигать и следовательно может содержать больше отказов, чем неоптимизированные версии.
Уровень исходного кода
Предотвращение плохого качественного кодирования может также улучшить производительность путем предотвращения очевидного замедления. После этого, однако, некоторая оптимизация возможна, которые на самом деле уменьшают пригодность для обслуживания; некоторые, но не все они могут в наше время быть выполнены оптимизирующими компиляторами. Например, использование большей косвенности часто необходимо, чтобы упростить или улучшить программное обеспечение, но та косвенность имеет стоимость.
Оптимизация кода делает код выполненным быстрее. Существует два основных способа сделать это:
1) Сжатие большего количества работы в меньшее количество циклов. Фигура, где код делает дополнительную копию или если существует ответвление в жестком цикле. Это оптимизирует в маленьком.
2) То, чтобы заставлять Ваши алгоритмы масштабироваться лучше. Вы, возможно, услышали о "Большом O" нотацию. Это заставляет алгоритм ухудшиться намного менее быстро с большими наборами данных.
Например, при наивном поиске телефонной книги имя, Вы запустите на странице 1 и считаете все имена, пока Вы не найдете тот, который Вы ищете. Это возьмет много инструкций, масштабируемых количеством имен в телефонной книге. Мы называем этот O (n). Теперь думайте о том, как Вы действительно ищете телефонную книгу. Вы открываетесь к некоторому месту к середине и видите, которые примыкают имя, которое Вы ищете, идет. Это называют двоичным поиском и масштабами в логарифме количества имен. Мы называем этот O (logn). Это намного быстрее.
Помните первое правило оптимизации: Мера сначала. Много лет человека были проведены, оптимизируя код, который не был выполнен очень.
При выполнении оптимизации кода Вы берете метрику на своем коде и пытаетесь сделать это более эффективным. Метрика обычно относится к дефицитному ресурсу.
Вот общие метрики
После оптимизации код должен дать тот же результат.
Проблема состоит в том, что необходимо сделать выбор. Скорость выполнения часто идет с большей памятью consuption...
Вы должны также alwas рассматривать оптимизацию глобально. Наличие усиления 10 мс в цикле, когда Вы затем тратите 1 000 мс, ожидающих веб-сервиса, полностью бесполезно.
Оптимизация имеет две основных цели:
получение Вашего программного обеспечения использует меньше ресурсов, например, работает быстрее, меньше, использует меньше RAM, меньше пространства на жестком диске и при выполнении и храня документы, меньше доступа к сети...
получение программного обеспечения быть более удобным в сопровождении, путем рефакторинга его.
Вы не должны оптимизировать, пока никакой связанный вопрос не был поднят: намного более трудно отладить оптимизированный код, чем оптимизировать правильный код.
Для добавления к ответу Anton Gogolev, когда части кода нужна оптимизация, это - потому что конкретное требование к производительности не встречено. Мы разрабатываем программы для соответствия пользовательским требованиям, правильно? Большинство программистов склонно думать в основном с точки зрения функциональных требований, т.е. что делает программа, но у пользователей также будут требования к производительности, что является стоимостью ресурса (сетевая пропускная способность, циклы ЦП, память, дисковое пространство, и т.д....) обеспечения функциональности. Оптимизация является процессом изменения части кода для соответствия требованию реального исполнения. По моему скромному мнению, это должно произойти во время проектирования, но Вы будете иногда писать часть кода только, чтобы обнаружить, что он показывает низкие результаты. Для оптимизации кода сначала необходимо узнать, который является ресурсом, что Вы по использованию. Если это - циклы ЦП или память, профилировщик мог бы помочь. Если это будет сетевая пропускная способность, которая является очень общей в эти дни, то необходимо будет сделать некоторое тестирование загрузки и профилирование comms.
Мой совет состоял бы в том, чтобы всегда понимать Ваши текущие и вероятные будущие требования производительности перед написанием кода и оптимизировать в стадии проектирования. Последняя оптимизация является дорогой, трудной, и часто или перестала работать или приводит к ужасному коду.
Это могло бы быть, например, что код имеет блок кода, который дублирован и мог быть помещен в метод, Вы могли бы использовать удержанные от использования методы/классы, могли бы быть более простые способы сделать то, что делает код, могла бы быть некоторая чистка, чтобы сделать (например, удалить трудно кодирование) и т.д...