Проверка на анаграммность
Проверить, являются ли строки анаграммами (например, в результате случайной перестановки букв) поможет класс
Посмотреть код
#string #collections
Проверить, являются ли строки анаграммами (например, в результате случайной перестановки букв) поможет класс
Counter модуля collections.Посмотреть код
#string #collections
Запрос пароля во время выполнения программы
Этот простой пакет позволяет запрашивать у пользователя его пароль, а также получать его имя (под которым он вошёл в систему).
Правда, при работе с паролями стоит знать о том, что не все системы поддерживают скрытие паролей. Python постарается вас об этом уведомить. Если это произойдёт – вы увидите соответствующее предупреждение в командной строке.
Посмотреть код
#tips
Этот простой пакет позволяет запрашивать у пользователя его пароль, а также получать его имя (под которым он вошёл в систему).
Правда, при работе с паролями стоит знать о том, что не все системы поддерживают скрытие паролей. Python постарается вас об этом уведомить. Если это произойдёт – вы увидите соответствующее предупреждение в командной строке.
Посмотреть код
#tips
Загрузка модели в Keras
Библиотека Keras позволяет сохранять модель в такие форматы как YAML и json, однако гораздо удобнее (и нативнее, если можно так выразиться) сохранять модель в формат H5 (hdf5).
Данный формат позволяет сохранить:
📌 Веса модели
📌 Ее архитектуру
📌 loss и metrics
✏️ Для работы с этим форматом вам необходимо установить модуль
После загрузки вы можете обращаться к
Посмотреть код
#Keras #NN
Библиотека Keras позволяет сохранять модель в такие форматы как YAML и json, однако гораздо удобнее (и нативнее, если можно так выразиться) сохранять модель в формат H5 (hdf5).
Данный формат позволяет сохранить:
📌 Веса модели
📌 Ее архитектуру
📌 loss и metrics
✏️ Для работы с этим форматом вам необходимо установить модуль
h5pyПосле загрузки вы можете обращаться к
model с помощью привычных команд.Посмотреть код
#Keras #NN
Интеграл из предыдущего поста можно легко посчитать, если заметить что вклад первого слагаемого равен нулю (нечетная функция интегрируется в симметричных пределах). Остальное берется заменой x = 2*sin(φ).
Правильный ответ: π
Можно посчитать это численно, с помощью пакета sympy. Это библиотека для символьной математики. Для этого импортируем
Далее синтаксис очень сильно напоминает Wolfram Mathematica. Просто передаем в
Посмотреть код
#sympy
Правильный ответ: π
Можно посчитать это численно, с помощью пакета sympy. Это библиотека для символьной математики. Для этого импортируем
Symbol, integrate и sqrt. Далее синтаксис очень сильно напоминает Wolfram Mathematica. Просто передаем в
integrate функцию и кортеж с пределами.Посмотреть код
#sympy
Нахождение близких соответствий в строках
Предположим, вы попали в ситуацию, когда вам понадобилось, задействуя концепцию наподобие расстояния Левенштейна, найти в списке слова, похожие на некую входную строку. Решить эту задачу можно с помощью built-in модуля
Данный метод ищет "наилучшие" возможные совпадения. Первый аргумент задаёт искомую строку, второй аргумент задаёт список, в котором выполняется поиск.
Также в метод можно передать необязательный аргумент
Посмотреть код
Предположим, вы попали в ситуацию, когда вам понадобилось, задействуя концепцию наподобие расстояния Левенштейна, найти в списке слова, похожие на некую входную строку. Решить эту задачу можно с помощью built-in модуля
difflib.Данный метод ищет "наилучшие" возможные совпадения. Первый аргумент задаёт искомую строку, второй аргумент задаёт список, в котором выполняется поиск.
Также в метод можно передать необязательный аргумент
n, который задаёт максимальное число возвращаемых совпадений.Посмотреть код
Нравится вам новый стиль постов?
Anonymous Poll
74%
Да, полностью
22%
Да, но разбавляй их слегка лайв постами
4%
Нет, не люблю картинки
Кэширование результатов вызова функций с помощью декоратора
Доводилось ли вам писать функции, которые выполняли какие-нибудь длительные операции чтения-записи, или достаточно медленные рекурсивные вычисления?
Думали ли вы при этом о том, что таким функциям не повредило бы кэширование результатов? Кэшировать результаты вызова функции можно с помощью декоратора
В этом примере мы выполняем GET-запросы, результаты которых кэшируются (кэшировано может быть до 32 результатов). Тут можно увидеть и то, что мы получаем сведения о кэше функции, воспользовавшись методом
Посмотреть код
#functools
Доводилось ли вам писать функции, которые выполняли какие-нибудь длительные операции чтения-записи, или достаточно медленные рекурсивные вычисления?
Думали ли вы при этом о том, что таким функциям не повредило бы кэширование результатов? Кэшировать результаты вызова функции можно с помощью декоратора
lru_cache из модуля functools.В этом примере мы выполняем GET-запросы, результаты которых кэшируются (кэшировано может быть до 32 результатов). Тут можно увидеть и то, что мы получаем сведения о кэше функции, воспользовавшись методом
cache_info.Посмотреть код
#functools
Нахождение часто встречающихся элементов в списке
📌 Нахождение в списке таких элементов, которые встречаются в нём чаще других, это весьма распространённая задача. Решить её можно, например, воспользовавшись циклом
📌 Но такой подход – это конечно пустая трата времени. Решать подобные задачи можно с помощью класса
✏️
Посмотреть код
#collections
📌 Нахождение в списке таких элементов, которые встречаются в нём чаще других, это весьма распространённая задача. Решить её можно, например, воспользовавшись циклом
for и словарём, в котором будут собраны сведения о количестве одинаковых элементов.📌 Но такой подход – это конечно пустая трата времени. Решать подобные задачи можно с помощью класса
Counter из модуля collections.✏️
Counter по сути основан на словаре, хранящем соответствия элементов и количества их вхождений в список. Поэтому соответствующий объект можно использовать как обычный dict.Посмотреть код
#collections
Очистка входных строковых данных
Задача очистки данных, вводимых пользователем, актуальна практически для любой программы.
📌 Иногда данные можно очистить с помощью регулярного выражения.
📌 Но в случаях, когда задача усложняется, можно применить более удачный способ её решения. Здесь пробельные символы
✏️ Это – простой пример, но мы можем его расширить, создавая таблицы переназначения символов с использованием пакета
Такой подход позволяет убирать из строк всё то, что там не нужно.
Посмотреть код
#tips
Задача очистки данных, вводимых пользователем, актуальна практически для любой программы.
📌 Иногда данные можно очистить с помощью регулярного выражения.
📌 Но в случаях, когда задача усложняется, можно применить более удачный способ её решения. Здесь пробельные символы
"\n" и "\t" заменяются на обычные пробелы, а символ "\r" удаляется из строки полностью. ✏️ Это – простой пример, но мы можем его расширить, создавая таблицы переназначения символов с использованием пакета
unicodedata и его функции combining().Такой подход позволяет убирать из строк всё то, что там не нужно.
Посмотреть код
#tips
comp3321_red.pdf
18.5 MB
курс от АНБ по Python
В прикрепленном файле вы найдете немного отредактированную четырехсотстраничную распечатку учебного курса COMP 3321 по Python, который преподается в АНБ.
Данный курс содержит краткое введение в Python от его создателя Гвидо ван Россума и объясняет, для чего этот язык подходит лучше всего, например, для автоматизации задач, создания веб-приложений или проведения углубленных математических исследований.
В прикрепленном файле вы найдете немного отредактированную четырехсотстраничную распечатку учебного курса COMP 3321 по Python, который преподается в АНБ.
Данный курс содержит краткое введение в Python от его создателя Гвидо ван Россума и объясняет, для чего этот язык подходит лучше всего, например, для автоматизации задач, создания веб-приложений или проведения углубленных математических исследований.
Объявление нескольких конструкторов в классе
Перегрузка функций – это одна из возможностей, весьма широко используемых в различных языках программирования, но не в Python.
📌 Хотя в Python нельзя перегрузить обычную функцию, можно пользоваться чем-то вроде перегрузки конструкторов с использованием методов класса.
📌 Конечно, вместо использования методов класса, можно поместить всю логику альтернативных конструкторов в
✏️ В результате может получиться рабочий код, но этот код будет тяжело читать и поддерживать. Тут можно порекомендовать поместить минимум логики в
✏️ При таком подходе в нашем распоряжении окажется чистый код, с которым удобно будет работать и автору этого кода, и тому, кто этим кодом будет пользоваться.
Посмотреть код
Перегрузка функций – это одна из возможностей, весьма широко используемых в различных языках программирования, но не в Python.
📌 Хотя в Python нельзя перегрузить обычную функцию, можно пользоваться чем-то вроде перегрузки конструкторов с использованием методов класса.
📌 Конечно, вместо использования методов класса, можно поместить всю логику альтернативных конструкторов в
__init__ и решить задачу с использованием *args, **kwargs и множества выражений if.✏️ В результате может получиться рабочий код, но этот код будет тяжело читать и поддерживать. Тут можно порекомендовать поместить минимум логики в
__init__ и выполнить все операции в отдельных методах/конструкторах.✏️ При таком подходе в нашем распоряжении окажется чистый код, с которым удобно будет работать и автору этого кода, и тому, кто этим кодом будет пользоваться.
Посмотреть код
Простейший парсер прокси
📌 Для реализации нам потребуется библиотека
📌 С помощью переменной
✏️ В функции grab, кроме того, можно задавать
Посмотреть код
📌 Для реализации нам потребуется библиотека
proxybroker, и одна асинхронная функция для записи в файл.📌 С помощью переменной
limit можно задавать количество адресов.✏️ В функции grab, кроме того, можно задавать
types=['HTTP', 'HTTPS']Посмотреть код
Модуль dis и constant folding в Python 3.7
Кратко разбираем особенности constant folding в Python 3.7
Читать статью
Кратко разбираем особенности constant folding в Python 3.7
Читать статью
Teletype
Модуль dis и constant folding в Python 3.7
Разбираем constant folding в Python
Параметры в iter
📌 Обычно built-in функция
📌 Однако, можно передать два параметра. В таком случае, первый параметр должен быть callable-объектом, а второй — результатом вызова первого объекта, на котором нужно остановить итерирование.
Как пример, считывание данных из файла по кускам длины 64, до первого вхождения пустой строчки.
#iter
📌 Обычно built-in функция
iter() возвращает итератор от переданной последовательности.📌 Однако, можно передать два параметра. В таком случае, первый параметр должен быть callable-объектом, а второй — результатом вызова первого объекта, на котором нужно остановить итерирование.
Как пример, считывание данных из файла по кускам длины 64, до первого вхождения пустой строчки.
#iter