PYTHON ONLINE
402 subscribers
1 photo
52 links
PYTHON для начинающих
Download Telegram
Библиотека showballstemmer.

Если вы когда-либо работали над поисковыми системами, то хорошо знаете, что хороший поисковик должен иметь множество функций, к примеру, уметь находить информацию по минимальному запросу.

Многие используют pymorph2 (первая слишком много потребляет ресурсов), но для нахождения большинства результатов достаточно определять основу слова, а не начальную форму.

Как раз библиотека showballstemmer и занимается тем, что определяет основу слова, что, в свою очередь, позволяет сделать поиск более точным. При этом, библиотека потребляет мало ресурсов, а вот результат у нее получается намного лучше.

Для начала нужно импортировать модуль требуемого языка, к примеру, вот модули английского, русского и французского, соответственно: EnglishStemmer, FrenchStemmer, RussianStemmer.
Более продвинутая работа со списками

Работая со списками очень важно понимать, как правильно формировать срезы списка. Для приложений, которые активно используют группы данных, срезы являются незаменимым инструментом.

Общая форма формирования среза выглядит следующим образом:


Комбинации параметров помогут вам достичь необходимого результата.
Основные генераторы списков.

Мы, зачастую, при составлении исходных данных для различных задач используем набор списков, но, как говорится, где можно автоматизировать какой-либо процесс, его нужно автоматизировать.

Генераторы списков сами по себе весьма интересная особенность языка. С их помощью можно максимально коротко и просто сформировать интересующий вас список значений.

Для примера:

>>> data = [i for i in range(0, 10)]
>>> print(data)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

или

>>> data = [i for i in "python"]
>>> print(data)
['p', 'y', 't', 'h', 'o', 'n']
Удаление префиксов и суффиксов

Почему-то многие разработчики посчитали данную фишку в 3.9 не очень интересной и попросту ее выбросили. Хотя и очень даже зря.

Ведь некоторое программисты до сих пор для удаления префиксов и суффиксов на полном серьезе пытаются использовать забагованные .strip и .lsrtip. Это обусловлено тем, что они не до конца понимают, как работают два этих метода.

Но все же в Python 3.9 были добавлены методы для строк .removeprefix и .removesuffix, которые предназначены именно для удаления префиксов и суффиксов в строках.
Используем потоковый ввод.

Можно обрабатывать ввод от пользователя потоком.

В таком случае для завершения надо воспользоваться специальной "командой" на WindowsCtrl + D. А запустить потоковый ввод можно посредством библиотеки sys и метода stdin.

При необходимости получить и тут же обработать строку, пишем: sys.stdin

А вот если надо прочитать весь потоковый ввод, а затем обработать, то sys.stdin.readlines()
Операторы множеств.

По своей сути, множество представляет собой неупорядоченную коллекцию, в которой все элементы уникальны. Как вы понимаете, одно и то же значение не может повторяться дважды.

Помимо обычных методов, у множеств имеется поддержка различных операторов таких как: объединение, пересечение, симметрическая разность, обычная разность и некоторые другие.
Форматируем строку с помощью f-строк.

f-
строки очень похожи на метод .format(), но при этом они являются более емким способ сделать то же самое, всего-лишь добавив к строке букву f в качестве префикса.

Последовательный порядок из метода конкатенации
Модульность метода .format()

Данные достоинства обуславливают все большее количество разработчиков, которые используют именно этот метод. Помимо этого. его попросту очень легко освоить. Поэтому f-строки очень хороши для новичков в программировании.
Контейнер deque.

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

Помимо этого, контейнер deque позволяет обеспечить линейную сложность O(1) для операций добавления и выталкивания по сравнению со стандартным списком, у которого сложность по времени для тех же операций составляет O(n).

А еще deque имеет возможность использовать такие стандартные функции, как sum, min, max и другие.
Функция findall()

При необходимости найти все вхождения, в дело идет функция findall().

Синтаксис: findall(pattern, string, flags=0[optional])

В случае успеха функция возвращает список, в котором в виде строк содержатся все искомые вхождения по порядку. При этом, если вхождений нет, то эта функция возвратит пустой список.
Метод float.hex.

Данный метод позволит вам предоставить число с плавающей запятой в виде шестнадцатеричной строки. Так, для конечных чисел с плавающей запятой данное представление всегда будет включать начальный 0x и конечный p и показатель степени.

Шестнадцатеричные строки обеспечивают точное представление и спецификацию чисел с плавающей запятой.
lambda функции с условием.

lambda функции позволяет облегчить код, повысить его читаемость, а также может сгруппировать некоторый алгоритм в одну строку, а еще их можно использовать вместе с условиями.

Но таким образом, можно лаконично упаковывать множество простых алгоритмов.
Как создать утилиту для генерации пароля?

Для наших целей мы будем использовать символы из пакета String. Собираем ascii буквы и цифры. После чего выбираем из них случайные для необходимой длинны пароля.

Будет полезно как для личного использования, так и для личного использования.
Numpy "Базовые операции"

В библиотеке Numpy весьма просто реализованы простейшие операции: сложение, вычитание, умножение и деление. Единственное, что для выполнения операций необходимо, чтобы массивы были одинаковыми.

Также, можно использовать фильтрации с помощью простейшего знака, то есть в массивах можно не перебирать через итератор filters, а просто поставить нужный знак.

А еще можно найти математические операции, такие как: синус, косинус и подобные.
Регулярные выражения.

Регулярные выражения (REGEX), представляют собой более гибкий способ нахождения подстрок в строках. В Python имеется встроенный модуль, который позволяет работать с регулярными выражениями, — re. Модуль re содержит функцию search, которая позволит вам найти подстроку.

При необходимости сложных сопоставлений, к примеру, учет регистра, данный метод подойдет вам лучше всего. При этом, у него имеются и недостатки, такие как: сложность и скорость работы. Поэтому в простеньких задачах его лучше не использовать.
Копируем объекты.

Стандартное присваивание не создает новый объект, а только копирует ссылку на имеющийся. При использовании copy.copy(), вы совершите поверхностное копирование, то есть будет создан новый объект, но его ссылки на другие объекты будут те же.

А вот если использовать copy.deepcopy(), то получатся "настоящие" копии объекта и всех его ссылок.
Как получить текущее имя пользователя в Python?

Модуль ОС в Python позволяет получить функции для взаимодействия с операционной системой. ОС входит в стандартные служебные модули Python. Данный модуль представляет собой портативный способ использования функций, зависящих от операционной системы.

А вот метод os.getlogin() в Python позволит вам получить имя пользователя, вошедшего в систему на управляющем терминале процесса.
Бесконечный итератор.

Функция cycle() из модуля itertools принимает на вход итерируемый объект и создает бесконечный итератор, который циклически возвращает элементы данного объекта.

Суть в том, что когда элементы последовательности заканчиваются, итерация начинается вновь с первого элемента.

Но при работе с циклом по такому итератору, важно предусмотреть выход из цикла, иначе цикл станет бесконечным.

Можно также воспользоваться islice(), который вернет итератор по подмножеству переданного объекта.
Метод Counter.most_common()

С помощью данного метода можно возвратить список из n наиболее распространенных элементов и их количество от наиболее распространенных до наименее. Если n опущено или None, метод cnt.most_common() возвратит все элементы в счетчике.

При этом, элементы с равным количеством будут упорядочены в порядке, в котором они встречаются первыми.
Как проверить четности или нечетности числа без использования оператора %

Данный трюк, по сути, не намного лучше, чем использование оператора %, но иногда он действительно эффективен (с большими числами).

К примеру:
k = 3
Двоичный: «11 & 1» будет 001, поэтому число нечетное
k = 4
Двоичный: «100 & 1» будет 000, поэтому число четное.
Наборы символов

В стандартной библиотеке можно найти множество интересных вещей. Сегодня мы с вами поговорим об одной из них.

В пакете string можно получить получить наборы символов по заданному параметру. По своей сути, это уже готовые строки, для формирования пароля или шифрования.
Как проверить строки на анаграммность?

Для поверки строк на анаграммность, (к примеру, в следствии случайной перестановки букв) можно использовать класс Counter модуля collections.