Python Backend | YeaHub
1.15K subscribers
142 photos
37 videos
6 files
223 links
Теория, подготовка к интервью и курсы для Python разработчиков

YeaHub — это платформа для IT-специалистов, объединяющая обучение, карьерный рост, развитие и сообщество единомышленников.

Платформа: https://yeahub.ru

Для связи: @ruslan_kuyanets
Download Telegram
#полезное
😊 Использование functools.lru_cache для оптимизации производительности

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

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

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес
🤔 Что знаешь про ORM?

ORM (Object-Relational Mapping) - это метод, который позволяет работать с базами данных с помощью объектно-ориентированного подхода. Вместо написания SQL- запросов, разработчик работает с объектами, а ORM автоматически преобразует их в SQL-запросы для взаимодействия с базой данных.

👉Новости 👉Платформа
Please open Telegram to view this post
VIEW IN TELEGRAM
#ЛитКод
Задача: 632. Smallest Range Covering Elements from K Lists

У вас есть k списков отсортированных целых чисел в неубывающем порядке. Найдите наименьший диапазон, в который входит хотя бы одно число из каждого из k списков. Мы определяем, что диапазон [a, b] меньше диапазона [c, d], если b - a < d - c или a < c, если b - a == d - c.

Пример:
Input: nums = [[4,10,15,24,26],[0,9,12,20],[5,18,22,30]]
Output: [20,24]


👨‍💻 Алгоритм:

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

2⃣Нахождение минимального диапазона
Используйте кучу для извлечения минимального элемента и обновления текущего диапазона. Обновляйте максимальный элемент в текущем диапазоне при добавлении новых элементов.

3⃣Проверка и обновление диапазона
Продолжайте обновлять кучу и диапазон, пока возможно. Завершите, когда один из списков исчерпан.

😎 Решение:
from heapq import heappop, heappush

def smallestRange(nums):
min_heap = []
max_value = float('-inf')

for i in range(len(nums)):
heappush(min_heap, (nums[i][0], i, 0))
max_value = max(max_value, nums[i][0])

range_start, range_end = float('-inf'), float('inf')

while len(min_heap) == len(nums):
min_value, row, col = heappop(min_heap)

if max_value - min_value < range_end - range_start:
range_start, range_end = min_value, max_value

if col + 1 < len(nums[row]):
heappush(min_heap, (nums[row][col + 1], row, col + 1))
max_value = max(max_value, nums[row][col + 1])

return [range_start, range_end]


👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
DeeplParser-main.zip
6.7 KB
#полезное
🤓 Скрипт переводчик

Скрипт для перевода текста любого объема с помощью Deepl переводчика.

🤖 ЯП: Python 3.11+
📂 Модули: bs4, selenium
🖥 База данных: -

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
До и после программирования

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес
🤔 Какие основные НТТР методы знаешь?

Основные НТТР-методы включают:
GET - запрос на получение ресурса.
POST - запрос на создание нового ресурса.
PUT - запрос на обновление ресурса.
DELETE - запрос на удаление ресурса.
РАТСН - запрос на частичное обновление ресурса.

👉Новости 👉Платформа
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😊 5 удивительных трюков для Python

1⃣QR-код с помощью Python
2⃣Конвертация изображений в PDF
3⃣Скачивание видео с YouTube
4⃣Отправка Email с помощью Python
5⃣ Определение языка

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
#статьи
😐 Как парсить данные с Python?

Парсинг — это процесс извлечения нужной информации из текста, HTML-страниц, JSON, XML или других данных. Благодаря данной статье ты узнаешь, как правильно парсить данные с Python.
Читать статью

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#статьи
🤯 Pygame для начинающих программистов
Читать

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес
🤔 Что такое мультипроцессинг?

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

👉Новости 👉Платформа
Please open Telegram to view this post
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
#видео
🤓 Пишем доморощенный веб сервер на Python

Автор рассказывает о взаимодействии клиента (обычно браузера) и сервера через протокол HTTP, разбирает структуру HTTP-запросов и ответов, а затем пишет сервер, который умеет обрабатывать входящие запросы и отдавать HTML-файлы из указанной директории.
📱 Смотреть на ютубе

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
🥺 Сделай Pandas/Seaborn быстрее в 100 раз!

FireDucks теперь также работает с сторонними библиотеками, такими как Seaborn.

Для начала: хотя Pandas — самая популярная библиотека для работы с DataFrame, она ужасно медленная.

🟠Использует только одно ядро процессора.
🟠Оперирует громоздкими DataFrame.
🟠Исполняет код сразу, что мешает оптимизации.

FireDucks — это высоко оптимизированная замена Pandas с таким же API.

Он также бесшовно интегрируется со сторонними библиотеками, такими как Seaborn. И он действительно быстрый.

Как показано на изображении выше:

🟠Создание тепловой карты корреляций на DataFrame Pandas занимает 4,36 секунды.
🟠То же самое на FireDucks DataFrame выполняется более чем на 60% быстрее.

Технически Seaborn не распознает FireDucks DataFrame.

Однако благодаря механизму перехвата импорта (через %load_ext fireducks.pandas), FireDucks можно бесшовно интегрировать со сторонними библиотеками, такими как Seaborn, которые ожидают Pandas DataFrame.

И при этом ускоряется весь процесс вычислений.
Ты можешь протестить здесь

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😵‍💫 Это простые, но мощные приемы, которые помогают писать красивый и эффективный код в Python

🟠Обмен значениями переменных без временной переменной
🟠List comprehensions для создания списков в одну строку
🟠Объединение списка в строку с .join() вместо неэффективной конкатенации
🟠Использование enumerate вместо range(len()) для перебора списков
🟠Метод get у словарей, чтобы избежать ошибок при отсутствии ключа
🟠Распаковка значений списка в несколько переменных
🟠Использование set для удаления дубликатов из списка

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес
🤔 Что такое GIL?

GIL (Global Interpreter Lock) - это механизм, который ограничивает выполнение нескольких потоков Python в один момент времени. Он гарантирует, что только один поток может исполнять байт-код Python, что делает многозадачность в Python с потоками неэффективной для вычислительно интенсивных задач.

👉Новости 👉Платформа
Please open Telegram to view this post
VIEW IN TELEGRAM
#ЛитКод
Задача: 560. Subarray Sum Equals K

Дан массив целых чисел nums и целое число k, вернуть общее количество подмассивов, сумма которых равна k.

Подмассив - это непрерывная непустая последовательность элементов внутри массива.

Пример:
Input: nums = [1,1,1], k = 2
Output: 2


👨‍💻 Алгоритм:

1⃣Самый простой метод - рассмотреть каждый возможный подмассив данного массива nums.

2⃣Найти сумму элементов каждого из этих подмассивов и проверить равенство полученной суммы с заданным k.

3⃣Всякий раз, когда сумма равна k, увеличить счетчик, используемый для хранения необходимого результата.

😎 Решение:
class Solution:
def subarraySum(self, nums: List[int], k: int) -> int:
count = 0
for start in range(len(nums)):
for end in range(start + 1, len(nums) + 1):
sum_ = sum(nums[start:end])
if sum_ == k:
count += 1
return count


👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM