Библиотека питониста | Python, Django, Flask
40.5K subscribers
2.78K photos
75 videos
51 files
4.36K links
Все самое полезное для питониста в одном канале.

Список наших каналов: https://t.me/proglibrary/9197

Курс по ML: https://cl

Для обратной связи: @proglibrary_feeedback_bot

По рекламе: @proglib_adv
РКН: https://gosuslugi.ru/snet/67b885cbd501cf3b2cdb5b36
Download Telegram
List Comprehensions

Удаление элемента из списка во время его итерации – это проблема, которая хорошо известна любому опытному разработчику.

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

Одна из таких парадигм – list comprehensions. Генераторы списков часто используют именно для решения подобных проблем, что и показывает реализация кода.

Заметьте, что в примере "забывается" старый список и на его месте появляется новый.
Mодуль cmath

Функции в математическом модуле стандартной библиотеки Python обрабатывают числа с плавающей запятой. Для комплексных чисел библиотека Python содержит модуль cmath.

📌Функция polar():
Эта функция возвращает полярное представление декартовой записи комплексного числа. Возвращаемое значение - это кортеж, состоящий из модуля и фазы.

📌Функция phase():
Эта функция возвращает угол против часовой стрелки между осью x и сегментом, соединяющим точку с исходной точкой. Угол представлен в радианах и находится между π и -π.

📌Функция rect():
Эта функция возвращает декартово представление комплексного числа, представленного в полярной форме, то есть по модулю и фазе.

📌Функция sin():
Эта функция возвращает тригонометрическое соотношение синуса фазового угла, представленного в радианах.
Методов списков list

Напоминаю, списки в Python – упорядоченные последовательности элементов различных типов данных. Списки можно изменять, например, добавлять новые элементы.

1. list.append(x) – добавляет элемент, переданный в качестве аргумента, в конец списка. Этот метод является самым простым и распространённым в коде.

2. list.insert(i, x) – вставляет элемент в переданную позицию. Первый аргумент означает индекс элемента, перед которым будет добавлено новое значения.

Таким образом, list.insert(0, x) вставит элемент в начало списка, а list.insert(len(list), x) эквивалентно записи list.append(x).

3. list.extend(iterable) – расширяет список, добавляя все элементы другой коллекции.
Библиотека Numpy "Базовые операции"

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

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

Доступны так же математические операции: синус, косинус и подобные.
Стеки

Стек — абстрактный тип данных, представляющий собой список элементов, организованных по принципу LIFO (англ. last in — first out, «последним пришёл — первым вышел»).

Методы встроенного списка в Python позволяют очень легко использовать список в виде стека. Чтобы добавить элемент на вершину стека, используйте append(). Чтобы извлечь элемент из верхней части стека, используйте pop() без явного индекса.

Кажется, что это не пригодится, но многие задачи хорошо решаются через pop, а главное, junior обязан знать такой простой способ и его применение. На собеседовании может встретится.
Библиотека Numpy

При создании массивом мы получаем тип ndarray.

Рассмотрим наиболее часты атрибуты (не методы!) применимые к массивам:

ndim - число измерений (чаще их называют "оси") массива.

shape - размеры массива, его форма. Это кортеж натуральных чисел, показывающий длину массива по каждой оси. Для матрицы из n строк и m столбов, shape будет (n,m). Число элементов кортежа shape равно ndim.

size - количество элементов массива. Очевидно, равно произведению всех элементов атрибута shape.

dtype - объект, описывающий тип элементов массива

itemsize - размер каждого элемента массива в байтах.

data - буфер, содержащий фактические элементы массива. Обычно мы этот атрибут не используем, так как обращаться к элементам массива проще всего с помощью индексов.
Функция sum()

Как бы вы решили задачу получения суммы элементов списка без обхода элементов в цикле?

Это можно сделать с помощью стандартной функции sum().
Параметры sum():
iterable - итерируемые типы (list ,dict, tuple, и.т.д.)
start - (необязательно) значение этого параметра прибавляется к уже готовой сумме элементов iterable. По умолчанию значение этого параметра 0.

Возвращаемое значение из sum():
sum() возвращает сумму start и элементов всех последующих элементов.
High Performance Python (2020)
Автор: Micha Gorelick, Ian Ozsvald
Количество страниц: 468

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

Скачать книгу
Перечисления

Python3
поддерживает простой механизм работы с перечислениями. Спасибо классу Enum.

Перечисления удобно использовать для хранения списков констант. Иначе константы беспорядочно расположены в коде.

Из документации по Python 3 можно узнать о том, что перечисление — это набор символических имён, привязанных к уникальным, неизменным значениям. Члены одного перечисления можно сравнивать на идентичность. Перечисления можно перебирать (итерировать).

Элементы перечисления хэшируемые. То есть программист может использовать их в словарях и множествах. Вспомним, что хэш позволяет создавать высокопроизводительные структуры. Используйте хэш-функции для сокращения объема данных.

#enum
Проверка версии в python

Сколько раз уже была такая ситуация: даёшь код знакомому, но версии не совпадают. У кого-то новее, у кого-то старше. И чтобы в такую ситуацию не попасть, можно проверить текущую версию языка и отменить запуск в случае чего. Поможет в этом значение version_info, из библиотеки sys.

Хороший способ узнать нужную версию, особенно если на ПК их несколько.
Прояви свои цифровые таланты на новом хакатоне Цифрового Прорыва по теме "Медицина, здравоохранение, наука".

Регистрируйся сейчас по ссылке: https://proglib.io/w/69d15edc

18 - 20 июня у тебя будет шанс:

💊 Разработать решение для Ростелекома, СБЕР AI, Университета Лобачевского & EPAM, iHerb, Правительства ЯНАО, МИАЦ и других.
💊 Познакомиться с признанными экспертами IT-отрасли.
💊 Поучаствовать онлайн или на оффлайн-хакаточках в Москве, Санкт-Петербурге, Нижнем Новгороде, Волгограде, Саратове, Новороссийске, Курске, Черкесске, Дубне и др.
💊 Выиграть хакатон и попасть в финал конкурса.

Общий призовой фонд до 4,5 млн. ₽, по 3 призовых места на каждый из 6 кейсов.

Приглашаем программистов, дизайнеров, аналитиков, тестировщиков, продактов, питчеров и других желающих развиваться в IT. Актуально как для новичков, так и для профи!

Участвуй в главном хакатоне июня 2021 года!
👍1
Библиотека JmesPath

Как вы уже заметили работать с json файлами в python очень удобно, ведь они отлично конвертируется в словарь. Также мы разобрали полезную библиотеку json, поэтому еще раз говорить о ней не будем.

Но вот нам надо получить данные из файла. А формат json, как правило имеет множество вложений. Искать что-то нужное можно, но не всегда это удобно и красиво (а дзен Python говорит, что красота имеет значение)

JmesPath облегчает работу в несколько раз. Вместо file['a']['b']['c'] можно написать jmespath.search('a.b.c', file). Кажется стало длиннее, но это потому что мы взяли мало элементов, и согласитесь a.b.c выглядит лучше. Даже отредактировать в случае чего будет проще.

Еще больше возможностей можно узнать в документации (да, её стоит читать).
Библиотека newspaper3k

Часто приходится парсить статьи? Первое, что приходит на ум, — BeautifulSoup, но newspaper3k дает огромное преимущество.

Он даёт возможность извлекать статьи и связанные с ней мета-данные. То есть, ты можешь получить html-код, авторов и текст статьи. И не придется самому распарсивать статью.

Библиотеку необходимо установить:

pip install newspaper3k
Базы Данных

Хранить данные нужно всем. Обычно при работе программы все хранится в оперативной памяти (ОЗУ), но при перезапуске все стирается. И для запоминания информацию записывают на жесткий диск. Это и есть База Данных.

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

Еще информацию которая меняется от программы к программе можно записать в отдельный Python файл. Так нам даже не придется его открывать.
Базы Данных (CSV)

Безусловно прошлый способ с данными в txt файле действенный, но им никто не пользуется. Обычно использую более проlвинутые БД с использованием SQL.

Вот только иногда с txt работать намного проще, а возможно и быстрее. В таком случае рекомендуем использовать формат CSV. Хороший пример - таблица из значений температуры по дням (в выходные наблюдение не велось):

Data;Monday;Tuesday;Wednesday;Wednes­day;Friday
1;1.7;2.8;14;16.9;5.0

Еще можно к примеру хранить местоположение объектов, для работы с CSV есть специальный модуль, который так и называется csv. На картинке предоставлен вывод. Сохранение файла делается почти так же, как и у списков. Подробнее в следующем посте.
Tiny Python Projects (2020)
Автор: Ken Youens-Clark
Количество страниц: 440

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

Скачать книгу
Прочитать произвольную строку из файла

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

И конечно же не обошлось без приветствия, вы специально заготовили несколько различных вариантов в файле text.txt:

Приветствую!
Здравствуйте!
Ку, здарова.
Добрый день!
Привет!

Чтобы вывести это на экран, может помочь функция getline из модуля linecache. В чем главное отличие этой функции от обычного метода чтения из файла? Функция getline кеширует все строчки файла в списке, так что следующие вызовы get_answer отработают моментально.
👍1