seniorpy | Unsorted

Telegram-канал seniorpy - Senior Python Developer

54326

№ 4931117861 Публикуем интересные/полезные фичи/библиотеки языка. По вопросам сотрудничества: @adv_and_pr Канал на бирже: https://telega.in/c/seniorpy

Subscribe to a channel

Senior Python Developer

Напишите функцию, которая принимает на вход список словарей, представляющих собой записи о студентах. Каждый словарь содержит ключи 'name', 'age' и 'grade'. Функция должна возвращать средний возраст студентов и среднюю оценку. Напишите код и объясните, как бы вы обработали случаи, когда в словарях отсутствуют ключи или значения не являются числами.

Объяснение:
В этой функции мы проходим по списку словарей, проверяем наличие ключей 'name', 'age' и 'grade' и их типы. Если данные валидны, добавляем их к общей сумме, чтобы затем посчитать средние значения.

Читать полностью…

Senior Python Developer

#вопросы_с_собеседований
Напишите функцию, которая принимает на вход строку и возвращает количество уникальных слов в этой строке. Считайте, что слова разделяются пробелами, знаками препинания должны быть удалены. Напишите код и расскажите, как вы обрабатываете знаки препинания. Какие дополнительные оптимизации можно внести?


Объяснение:
В этом коде (первая картинка) мы используем string.punctuation для определения знаков препинания и str.translate() для удаления их из строки. Затем мы приводим всю строку к нижнему регистру и разбиваем ее на слова, считая количество уникальных слов с использованием множества (set).

Оптимизации (вторая картинка):
Мы могли бы использовать регулярные выражения для более точного удаления знаков препинания и разделения слов. Вместо создания промежуточного списка words, мы могли бы сразу подсчитывать уникальные слова при проходе по строке, что сэкономило бы память.

Читать полностью…

Senior Python Developer

memoryview()

memoryview() в Python предоставляет объект для доступа к внутреннему представлению данных в виде буфера без копирования. Этот объект позволяет вам просматривать байты объекта, не копируя их, а также выполнять различные операции на уровне байтов.

memoryview() также может использоваться для работы с массивами и другими объектами, поддерживающими буферный интерфейс в Python.

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

#для_начинающих

Читать полностью…

Senior Python Developer

#вопросы_с_собеседований
Реализуйте алгоритм поиска в ширину (BFS - Breadth-First Search) для графа на Python. Напишите код и объясните, как работает этот алгоритм. Обсудите его сложность и применение.

Объяснение:

Алгоритм поиска в ширину (BFS) используется для обхода или поиска в графе. Он начинает с выбора стартовой вершины и пошагово распространяется по всем смежным вершинам.

Шаги алгоритма:
1. Создается пустое множество visited для отслеживания посещенных вершин и очередь queue для управления порядком обхода.
2. Стартовая вершина добавляется в очередь и отмечается как посещенная.
3. Пока очередь не пуста, извлекается вершина из начала очереди (queue.popleft()).
4. Выводится значение текущей вершины и добавляются в очередь все её смежные вершины, которые еще не были посещены.
5. Шаги 3-4 повторяются до тех пор, пока очередь не опустеет.

Сложность:
Временная сложность: O(V + E), где V — количество вершин, E — количество ребер в графе.
Пространственная сложность: O(V), так как используется множество для отслеживания посещенных вершин.

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

Читать полностью…

Senior Python Developer

⚠️ Как Data Scientists дойти до уровня Middle+?

Совершенствовать мастерство ML в сообществе единомышленников!

Пройдите тест и проверьте, насколько вы готовы к обучению на продвинутом курсе «Machine Learning. Advanced» от OTUS.

🧑‍💻 В программе продвинутые ML-алгоритмы, RL, графы, временные ряды, рекомендательные системы, а также работа в production: настройка окружения, оптимизация кода, построение end-to-end пайплайнов и внедрение решений

⚠️ Вебинары в формате Live coding, где преподаватель с «чистого листа» показывает решение актуальных задач ML.

🔥  Ответьте на 20 вопросов, получите велкам-скидку и доступ к 2 предстоящим открытым урокам:

✔️ Ранжирование каталога товаров
✔️ Рекомендательные системы на основе матричных разложений

 ➡️ https://otus.pw/Hmqx/?erid=LjN8KRUSx

Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.

Читать полностью…

Senior Python Developer

❗️Как развиваться Python-разработчику?
 
Наращивать объем знаний и навыков. За этим приходите на вебинар, приуроченный к старту онлайн-курса «Python Developer. Professional» в OTUS.

✅ На вебинаре речь, конечно же, пойдет про SOLID, о котором так любят спрашивать на собеседованиях.

🔹Мы пройдемся по каждой букве в отдельности с примерами кода и описанием, не забыв про актуальность и применимость в мире Python разработки

Встречаемся 10 января в 20:00 мск, занятие будет приурочено к старту курса «Python Developer. Professional».

👉 ПРОЙТИ ТЕСТ для регистрации на открытый урок
https://otus.pw/P18F/?erid=LjN8K7LSg

Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.

Читать полностью…

Senior Python Developer

Пишем приложение на Python для подготовки к собеседованиям по Python

На конец 2023 года язык программирования Python является самым популярным по индексу TIOBE.

Смотреть статью

Читать полностью…

Senior Python Developer

Метод math.perm()

Метод math.perm() в Python возвращает количество способов выбрать k элементов из n элементов с порядком и без повторения.

Синтаксис:

math.perm(n, k)


Где:
n: Количество элементов из которых выбираются k элементов.
k: Количество элементов, которые выбираются.

В первом примере метод возвращает количество способов выбрать 3 элемента из 5 элементов. В результате получается 60 способов.
Во втором примере метод возвращает количество способов выбрать 5 элементов из 10 элементов. В результате получается 252 способа.

#для_начинающих

Читать полностью…

Senior Python Developer

Microservices | Вопросы с Собеседований

- Подборка вопросов по микросервисной архитектуре с реальных собеседований

- Авторские статьи по архитектуре, проектированию, базам данных

- Автор - Lead Developer с 8 лет опыта на Java/Kotlin

Читать полностью…

Senior Python Developer

с новым годом!! 🍾🎄🎉

Читать полностью…

Senior Python Developer

Что нам стоит диаграмму в Python построить: 5 вариантов привлекающей внимание визуализации данных и кое-что ещё

Диаграммы помогают визуализировать как простые, так и самые сложные наборы данных. При этом диаграмм — множество видов, у каждого есть свои достоинства и недостатки. О наиболее эффектных и эффективных, реализуемых с Python, мы решили рассказать в сегодняшней подборке.

Смотреть статью

Читать полностью…

Senior Python Developer

Узнаем время года с помощью Python

Для определения времени года можно использовать текущий месяц и сопоставить его с нужным временем года.

В этом примере мы используем модуль datetime для получения текущей даты и времени. Затем мы сравниваем текущий месяц с нужными месяцами для каждого времени года и определяем соответствующий сезон.

Читать полностью…

Senior Python Developer

Правильное подключение к БД: почему, зачем и как

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

В этой небольшой статье, я последовательно буду создавать подключения к БД, а затем показывать на примере, что может пойти не так.

Смотреть статью

Читать полностью…

Senior Python Developer

Узнаем сколько свободной памяти на компьютере

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

Метод virtual_memory() возвращает объект с информацией о памяти системы. Свойство available объекта содержит количество свободной памяти в байтах.

Читать полностью…

Senior Python Developer

Извлекаем имя из адреса электронной почты

Для извлечения имени из адреса электронной почты до символа ‘@‘ можно использовать регулярные выражения.

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

Читать полностью…

Senior Python Developer

pow()

В Python функция pow() используется для вычисления степени числа. Вот как она работает:

result = pow(x, y, z)


где: x — основание степени,
y — показатель степени,
z (необязательный параметр) — модуль, по которому производится вычисление.
Если z указан, то pow(x, y, z) возвращает (x y) % z. Если z не указан, то возвращается x y.

#для_начинающих

Читать полностью…

Senior Python Developer

🐍 Не просто сложно, а очень сложно... пройти хардкорный тест по Python от OTUS.

Ответьте на 20 вопросов и проверьте, насколько вы готовы к обучению на продвинутом курсе  «Python Developer. Professional» от OTUS.

🔹На обучении вас ждет продвинутые темы и практика на «боевых» задачах уровня Middle+

🔹Проектная работа, которой можно показать свой уровень на собеседовании

Овладейте лучшими практиками и навыками Python для уверенного карьерного роста 

✔️  Проверьте формат обучение на открытом уроке 23 января — FastAPI в действии: быстрое создание API для веб-приложений

 👉 Пройти тест 
https://otus.pw/Ovqi/?erid=LjN8KCpPW

Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.

Читать полностью…

Senior Python Developer

Метод __getitem__

Метод __getitem__ является частью протокола индексации, который позволяет объекту быть индексируемым, как это делается, например, для списков или словарей. Этот метод вызывается при использовании квадратных скобок [] для доступа к элементам объекта.

Этот метод также используется при работе с срезами. Если вы хотите, чтобы ваш объект поддерживал срезы, вы также можете реализовать метод __getitem__ с тремя аргументами: self, start, stop.

#для_начинающих

Читать полностью…

Senior Python Developer

frozenset

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

Вот несколько ключевых особенностей frozenset:

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

Обратите внимание, что, поскольку frozenset не поддерживает изменения, некоторые методы, которые изменяют множество (например, add, remove, discard), не применимы к frozenset. Однако, вы можете выполнять операции, возвращающие новые frozenset, такие как объединение и пересечение.

#для_начинающих

Читать полностью…

Senior Python Developer

Ruff

Ruff — это новый, быстроразвивающийся линтер Python кода, призванный заменить flake8 и isort.

Основным преимуществом Ruff является его скорость. Ruff в 10-100 раз быстрее аналогов (Линтер написан на Rust). В сравнении с flake8, автор заявляет о практически полном совпадении с набором правил инструмента и нативной реализацией популярных плагинов (flake8-bugbear и т.д.). Также Ruff совместим с Black «из коробки».

Ruff может форматировать код. Например, он автоматически удаляет неиспользуемые импорты. Что касается сортировки и группировки строк импорта, то она практически идентична isort.

Читать полностью…

Senior Python Developer

Реализуйте алгоритм сортировки слиянием (Merge Sort) на Python. Напишите код и объясните, как работает этот алгоритм. Расскажите о его сложности и возможных оптимизациях.

Объяснение:
Алгоритм сортировки слиянием (Merge Sort) использует стратегию «разделяй и властвуй». Он состоит из двух основных шагов:

Разделение (Divide): Массив разделяется на две равные (при четном числе элементов) или почти равные (при нечетном) части. Этот процесс рекурсивно выполняется для каждой из подпоследовательностей.
Слияние (Merge): Отсортированные подпоследовательности сливаются обратно в один отсортированный массив.

Сложность:
Временная сложность: O(n log n) в худшем, лучшем и среднем случаях.
Пространственная сложность: O(n).

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

Читать полностью…

Senior Python Developer

Метод swapcase()

Метод swapcase() в Python является встроенным методом строк (str), который создает новую строку, меняя регистр каждой буквы в исходной строке. Если буква была в верхнем регистре, она будет преобразована в нижний регистр, и наоборот.

Результатом будет строка 'hELLO, wORLD!'.

#для_начинающих

Читать полностью…

Senior Python Developer

Сцепление исключений

Сцепление исключений (exception chaining) позволяет сохранять информацию об исключении, которое произошло во вложенном блоке кода, в исключении более высокого уровня. Это полезно для отслеживания причин ошибок и обеспечения более полной информации о том, что произошло.

В примере на картинке, если возникает ZeroDivisionError, мы попадаем в блок except, а затем выполняем вложенный код, который вызывает ValueError. С помощью ключевого слова from мы указываем, что исключение ValueError является следствием (частью) исключения ZeroDivisionError. Таким образом, информация об исключении ZeroDivisionError сохраняется.

#для_продвинутых

Читать полностью…

Senior Python Developer

Функция tell()

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

Возвращаемое значение: целое число, указывающее положение указателя в байтах от начала потока.
Аргументы: tell() не принимает никаких аргументов.

#для_начинающих

Читать полностью…

Senior Python Developer

Сокращение ссылок прямо в коде

Иногда возникает необходимость сделать ссылку более короткой. Для этого пригодится библиотека pyshorteners — с помощью трех строк кода и сервиса tinyurl она позволяет быстро создать короткую ссылку.

Читать полностью…

Senior Python Developer

Узнаем количество фотографий в папке

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

Просто замените /путь/к/папке на фактический путь к вашей папке с фотографиями. Код будет подсчитывать количество файлов с расширениями .jpg, .jpeg, .png и .gif. Если вам нужно учитывать другие типы файлов, вы можете добавить соответствующие расширения в список photo_extensions.

Читать полностью…

Senior Python Developer

Сравниваем 2 лица на фото с помощью Python

Для сравнения двух лиц на фото в Python можно использовать библиотеку face_recognition.

В этом примере мы сначала загружаем изображения лиц и находим лица на изображениях с помощью функции face_locations().

Затем мы кодируем найденные лица с помощью функции face_encodings() и сравниваем их между собой с помощью функции compare_faces(). Результат сравнения - список булевых значений (True или False), которые сообщают, совпадают ли два лица на фото.

Читать полностью…

Senior Python Developer

В чем разница между is() и == в Python?

Операторы is и == в Python выполняют похожие функции, но работают немного по-разному. И если вы новичок, используете сравнения в коде, стоит понимать разницу. Это поможет реже прибегать к рефакторингу и дебагу.

Смотреть статью

Читать полностью…

Senior Python Developer

Ищем опечатки

Пакет spellchecker позволяет отыскать ошибки в тексте, а также может предложить варианты исправлений. В примере проходимся по списку из двух слов, из которых одно ('therre') написано с опечаткой. Функция correction замечает это и предлагает одно самое вероятное исправление, а candidates — несколько.

Пакет поддерживает шесть языков.

Документацию можно найти здесь.

Читать полностью…

Senior Python Developer

❗️Как развиваться Python-разработчику? 

Наращивать объем знаний и навыков. За этим приходите на вебинар, приуроченный к старту онлайн-курса «Python Developer. Professional» в OTUS. 

✅ 21 декабря — «Создаем REST API для сайта на Django»

🔹На занятии вы получите полное представление о принципах, инструментах и передовых методах создания надежного API, который легко интегрируется с проектами Django. 

🔹 Урок охватывает весь процесс проектирования и внедрения REST API: от настройки исходной среды до обработки аутентификации и оптимизации производительности.

🔥 Результат урока: 
Вы создадите проект Django для разработки API и приобретите знания по тестированию, отладке и развертыванию веб-сайтов Django с помощью RESTful API.

👉 ПРОЙТИ ТЕСТ для регистрации на открытый урок
https://otus.pw/bF7s/?erid=LjN8Juz6u

Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963

Читать полностью…
Subscribe to a channel