абенобаши

топ 100 блогов amarao_san02.01.2010 Оставляя в стороне всякие сервисные оболочки (типа командной строки и обработки ошибок), реальный код выглядит так:
from_list=frozenset(sys.argv[2:-1])
history=cPickle.load(file(argv[1]))
to_move=from_list-history
[sys.rename(f, argv[-1]) for f in to_move]
cPickle.dump(history | to_move,file(argv[1],"w"))


Главное в этом коде (что заставляет меня хихикать от восторга - это операция to_move = from_list-history.

Это такая миленькая операция из теории множеств, которая возвращает список элементов, отсутствующий в "вычитаемом" списке. Сам вычитаемый список может быть сколь угодно большим, это не важно.

Ну и вдогонку операция history|to_move, возвращающая результат пересечения множеств. С сохранением уникальности элементов.

Заметим, это МНОГО эффективнее, чем "ручной" код вида:

[sys.rename(f, argv[-1]) for f in to_move if f not in from_list]

Причём эффективнее не потому, что большая часть кода выносится из интерпретируемого режима, а именно алгоритмической оптимизацией - если history будет исчисляться миллионами строк, то каждое 'in' бо-бо, что на Си, что на питоне.

Не, множества меня реально прут:

Список для сохранения в файл выглядит так:

return memory | (to_move - errors)

errors - set(), в который в случае ошибки делается errors.add(f)

Оставить комментарий

Архив записей в блогах:
«Адвокат дьявола» - это не просто фильм, это культовое кинематографическое произведение, актерскому составу которого может позавидовать любой режиссёр и сценарист. Просмотр данной кинокартины может перевернуть ваше представление о кинематографе в целом (несомненно в лучшую сторону). ...
С тоило вчера предположить что весны не будет, как она пришла. Пугайте природу, мать вашу! Панно в "Озоне" )) Поплавочек на прогулке. Дома даже жарко, окна открывать пришлось. Кошечка Фрося почувствовала, что весной ...
-Этого урода я не прощу никогда. Чтоб ты понимала, это не какая-то там ненависть, которая мешает мне жить или что-то ещё. Это просто уже… ну знаешь… -Как хроническое? - подсказываю я. -Нет, - спокойно отмахивается Таня, - не так. Как факт. -На самом деле это не что-то острое, оно мне ...
Еще в прошлом году, 26 апреля 2023 года Басманный суд Москвы вынес постановление, в котором установил, что генерал-майор ФСБ Игорь Шахов не имеет никакого отношения к уголовному делу о передаче взяток полковнику ФСБ Дмитрию Фролову. В судебном решении так и зафиксировано: «…к уголовной ...
Давненько я не писал таких содержательных постов. Проснулся сегодня на удивление легко, а тут ещё под носом такая красотулина сидит и мурлыкает. В общем день задался...    От Масяни всем огромный пушистый привет!) А Вас кто будит ранним утром? Удачного трудодня! ...