Комбинаторика в Python

Комбинаторика — это раздел математики, в котором изучают, сколько комбинаций, подчинённых тем или иным условиям, можно составить из данных объектов. Короче, это все о сочетаниях, перестановках, числе способов и тому подобному. Почему важна комбинаторика? Нет, не только лишь для решения олимпиадных задач, но также комбинаторика – один из столпов теории вероятностей, которая в свою очередь…

Перенаправление стандартного вывода

Случается так, что некий код (возможно, не ваш) пишет в стандартный вывод какую-то нужную информацию. Ее нетрудно перехватить с помощью функции redirect_stdout из стандартного модуля contextlib. redirect_stdout является контекст менеджером (применяется совместно с with) и принимает аргументом файло-подобный объект (это может быть и дескриптор файла, и StringIO).  📎 Пример. Сохраним вывод функции help в строку…

Склеиваем пути правильно

Так делать плохо: Потому что: В разных ОС – разные разделители пути: ‘/’ для nix-подобных и macOS, ‘\\’ для Windows В компонентах могут быть или не быть слеши – легко допустить ошибку Набирать это даже не удобно (имхо) Самый простой способ правильного склеивания путей – os.path.join выберет нужный разделитель и расставит его как надо: Есть…

Счастливой отладки

Python не запрещает создавать переменные и функции с именами, идентичными встроенным. Шутки ради переопределим print: Мораль такова. Во-первых, нужно быть внимательным, когда даешь имена своим переменным и функциям, чтобы случайно не перекрыть встроенные имена, что может нарушить работу программы. Хорошая IDE вас, конечно, предупредит о перекрытии имен. Во-вторых, это иногда применимо для отладки или тестирования.…

Визуализация графа ссылок

В продолжение вчерашней темы, покажу, как можно визуализировать граф ссылок объектов в Python. Возможно, кому-то это поможет решить сложные моменты с использованием памяти и с организацией нетривиальных структур данных. 0) Для рисования графов понадобится graphviz Например, на MacOS вы можете установить его через Homebrew: 1) Установим библиотеку objgraph: 2) Использование. Пусть у нас есть такая…