Модули `time` и `pickle`, множества
Довольно мелкие темы, попавшиеся под руку при решении домашних заданий.
Множества (set(последовательность)). Операции &, |, ^, Использование множеств для хранения уникальных элементов.
Модуль time. Функции time.time(), time.strftime(). Запуск и останов вычислений по времени.
Модуль pickle. Функции pickle.dump(объект,файл) и pickle.load(файл). Применение pickle для имитации «типизированных файлов» в задачах.
Домашнее задание
Прочитать в учебнике про Pickle и Наборы (множества) в учебнике; про модуль time в документации
«Сортировка магнитных лент». Дан файл («магнитная лента»), содержащий строки, одновременно не умещающиеся в памяти. Требуется отсортировать этот файл построчно (записать отсортированные данные обратно на эту ленту). Для сортировки разрешается открывать небольшое число дополнительных файлов произвольного размера (использовать небольшое число дополнительных «лент»).
Предлагается использовать pickle для хранения в одном файле строк и не-строк.
Решение: sort_tape.py
Измеритель скорости. С помощью time.time() замерить, сколько операций random.shuffle() выполняет компьютер за 5 секунд
Написать собственную процедуру shuffle(). Насколько она медленнее?
Решение с двумя всё более низкоуровневыми функциями (каждая медленнее предыдущей!): shufflemeter.py
Записная книжка. В списке хранятся различные объекты Python, которые можно в него добавлять с клавиатуры (используется input()). Напишите программу, которая сохраняет ввод в файл, если видит специальную завершающую последовательность, и восстанавливает данные оттуда при последующем запуске.
Подсказка: input() — очень опасная функция, она выполняет eval() от введённой строки, следовательно, если вы определите функцию Quit() в программе, а потом введёте Quit() со стандартного ввода, то input() эту функцию выполнит!
Ввести ещё несколько функций, например, List(начало, конец) для просмотра пронумерованного списка (если параметры не указаны — всего) и Delete(начало, конец)
Условные обозначения
— тема по Linux
— необязательная тема
— теоретическое задание
— тема для самостоятельного изучения