№ 4931117861 Публикуем интересные/полезные фичи/библиотеки языка. По вопросам сотрудничества: @adv_and_pr Канал на бирже: https://telega.in/c/seniorpy
Напишите функцию, которая принимает на вход список словарей, представляющих собой записи о студентах. Каждый словарь содержит ключи 'name', 'age' и 'grade'. Функция должна возвращать средний возраст студентов и среднюю оценку. Напишите код и объясните, как бы вы обработали случаи, когда в словарях отсутствуют ключи или значения не являются числами.
Объяснение:
В этой функции мы проходим по списку словарей, проверяем наличие ключей 'name', 'age' и 'grade' и их типы. Если данные валидны, добавляем их к общей сумме, чтобы затем посчитать средние значения.
#вопросы_с_собеседований
Напишите функцию, которая принимает на вход строку и возвращает количество уникальных слов в этой строке. Считайте, что слова разделяются пробелами, знаками препинания должны быть удалены. Напишите код и расскажите, как вы обрабатываете знаки препинания. Какие дополнительные оптимизации можно внести?
Объяснение:
В этом коде (первая картинка) мы используем string.punctuation
для определения знаков препинания и str.translate()
для удаления их из строки. Затем мы приводим всю строку к нижнему регистру и разбиваем ее на слова, считая количество уникальных слов с использованием множества (set).
Оптимизации (вторая картинка):
Мы могли бы использовать регулярные выражения для более точного удаления знаков препинания и разделения слов. Вместо создания промежуточного списка words
, мы могли бы сразу подсчитывать уникальные слова при проходе по строке, что сэкономило бы память.
memoryview() memoryview()
в Python предоставляет объект для доступа к внутреннему представлению данных в виде буфера без копирования. Этот объект позволяет вам просматривать байты объекта, не копируя их, а также выполнять различные операции на уровне байтов.memoryview()
также может использоваться для работы с массивами и другими объектами, поддерживающими буферный интерфейс в Python.
Этот инструмент особенно полезен, когда вам нужно работать с большим объемом данных, и вы хотите избежать копирования данных, что может быть затратным с точки зрения времени и ресурсов.
#для_начинающих
#вопросы_с_собеседований
Реализуйте алгоритм поиска в ширину (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 применяется в задачах поиска кратчайших путей в невзвешенных графах.
Он также используется в задачах, связанных с обходом графов, например, в нахождении компонент связности.
⚠️ Как 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.
❗️Как развиваться Python-разработчику?
Наращивать объем знаний и навыков. За этим приходите на вебинар, приуроченный к старту онлайн-курса «Python Developer. Professional» в OTUS.
✅ На вебинаре речь, конечно же, пойдет про SOLID, о котором так любят спрашивать на собеседованиях.
🔹Мы пройдемся по каждой букве в отдельности с примерами кода и описанием, не забыв про актуальность и применимость в мире Python разработки
Встречаемся 10 января в 20:00 мск, занятие будет приурочено к старту курса «Python Developer. Professional».
👉 ПРОЙТИ ТЕСТ для регистрации на открытый урок
https://otus.pw/P18F/?erid=LjN8K7LSg
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.
Пишем приложение на Python для подготовки к собеседованиям по Python
На конец 2023 года язык программирования Python является самым популярным по индексу TIOBE.
Смотреть статью
Метод math.perm()
Метод math.perm() в Python возвращает количество способов выбрать k элементов из n элементов с порядком и без повторения.
Синтаксис:
math.perm(n, k)
n
: Количество элементов из которых выбираются k
элементов.k
: Количество элементов, которые выбираются.Microservices | Вопросы с Собеседований
- Подборка вопросов по микросервисной архитектуре с реальных собеседований
- Авторские статьи по архитектуре, проектированию, базам данных
- Автор - Lead Developer с 8 лет опыта на Java/Kotlin
Что нам стоит диаграмму в Python построить: 5 вариантов привлекающей внимание визуализации данных и кое-что ещё
Диаграммы помогают визуализировать как простые, так и самые сложные наборы данных. При этом диаграмм — множество видов, у каждого есть свои достоинства и недостатки. О наиболее эффектных и эффективных, реализуемых с Python, мы решили рассказать в сегодняшней подборке.
Смотреть статью
Узнаем время года с помощью Python
Для определения времени года можно использовать текущий месяц и сопоставить его с нужным временем года.
В этом примере мы используем модуль datetime
для получения текущей даты и времени. Затем мы сравниваем текущий месяц с нужными месяцами для каждого времени года и определяем соответствующий сезон.
Правильное подключение к БД: почему, зачем и как
Как подключить базу данных? Казалось бы, простейший вопрос, однако частенько здесь совершают ошибки. Как правило, даже если сделать всё плохо, проблем не возникнет, но это до поры до времени. Как только проект вырастет и увеличится нагрузка, эти ошибки дадут о себе знать, и отследить их будет сложно.
В этой небольшой статье, я последовательно буду создавать подключения к БД, а затем показывать на примере, что может пойти не так.
Смотреть статью
Узнаем сколько свободной памяти на компьютере
Для того, чтобы узнать сколько свободной памяти доступно на компьютере с помощью Python можно использовать модуль psutil.
Метод virtual_memory()
возвращает объект с информацией о памяти системы. Свойство available
объекта содержит количество свободной памяти в байтах.
Извлекаем имя из адреса электронной почты
Для извлечения имени из адреса электронной почты до символа ‘@‘ можно использовать регулярные выражения.
Это регулярное выражение начинает поиск с начала строки с помощью символа "^" и находит любую комбинацию строчных букв, цифр, дефисов, подчеркиваний, точек и знака минуса. Затем выражение находит символ "@" и останавливается.
pow()
В Python функция pow()
используется для вычисления степени числа. Вот как она работает:
result = pow(x, y, z)
🐍 Не просто сложно, а очень сложно... пройти хардкорный тест по Python от OTUS.
Ответьте на 20 вопросов и проверьте, насколько вы готовы к обучению на продвинутом курсе «Python Developer. Professional» от OTUS.
🔹На обучении вас ждет продвинутые темы и практика на «боевых» задачах уровня Middle+
🔹Проектная работа, которой можно показать свой уровень на собеседовании
Овладейте лучшими практиками и навыками Python для уверенного карьерного роста
✔️ Проверьте формат обучение на открытом уроке 23 января — FastAPI в действии: быстрое создание API для веб-приложений
👉 Пройти тест
https://otus.pw/Ovqi/?erid=LjN8KCpPW
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.
Метод __getitem__
Метод __getitem__
является частью протокола индексации, который позволяет объекту быть индексируемым, как это делается, например, для списков или словарей. Этот метод вызывается при использовании квадратных скобок []
для доступа к элементам объекта.
Этот метод также используется при работе с срезами. Если вы хотите, чтобы ваш объект поддерживал срезы, вы также можете реализовать метод __getitem__
с тремя аргументами: self
, start
, stop
.
#для_начинающих
frozensetfrozenset
представляет собой неизменяемое множество. Основное отличие между set
и frozenset
заключается в том, что set является изменяемым типом данных, тогда как frozenset
не может быть изменен после создания.
Вот несколько ключевых особенностей frozenset
:
Неизменяемость: Это означает, что вы не можете добавлять, удалять или изменять элементы в frozenset
после его создания.
Хешируемость: Поскольку frozenset
неизменяем, он является хешируемым, что означает, что его можно использовать в качестве ключа в словарях и элемента множества.
Обратите внимание, что, поскольку frozenset
не поддерживает изменения, некоторые методы, которые изменяют множество (например, add
, remove
, discard
), не применимы к frozenset
. Однако, вы можете выполнять операции, возвращающие новые frozenset
, такие как объединение и пересечение.
#для_начинающих
Ruff
Ruff — это новый, быстроразвивающийся линтер Python кода, призванный заменить flake8 и isort.
Основным преимуществом Ruff является его скорость. Ruff в 10-100 раз быстрее аналогов (Линтер написан на Rust). В сравнении с flake8, автор заявляет о практически полном совпадении с набором правил инструмента и нативной реализацией популярных плагинов (flake8-bugbear и т.д.). Также Ruff совместим с Black «из коробки».
Ruff может форматировать код. Например, он автоматически удаляет неиспользуемые импорты. Что касается сортировки и группировки строк импорта, то она практически идентична isort.
Реализуйте алгоритм сортировки слиянием (Merge Sort) на Python. Напишите код и объясните, как работает этот алгоритм. Расскажите о его сложности и возможных оптимизациях.
Объяснение:
Алгоритм сортировки слиянием (Merge Sort) использует стратегию «разделяй и властвуй». Он состоит из двух основных шагов:
Разделение (Divide): Массив разделяется на две равные (при четном числе элементов) или почти равные (при нечетном) части. Этот процесс рекурсивно выполняется для каждой из подпоследовательностей.
Слияние (Merge): Отсортированные подпоследовательности сливаются обратно в один отсортированный массив.
Сложность:
Временная сложность: O(n log n) в худшем, лучшем и среднем случаях.
Пространственная сложность: O(n).
Оптимизации:
— При реализации можно использовать вставочную сортировку для маленьких подмассивов, так как у нее меньшая константа в асимптотике.
— Если массив уже отсортирован, можно добавить проверку и пропустить шаг сортировки.
— Вместо копирования подмассивов при каждом рекурсивном вызове можно использовать вспомогательный массив для слияния, что уменьшит использование памяти.
Метод swapcase()
Метод swapcase()
в Python является встроенным методом строк (str), который создает новую строку, меняя регистр каждой буквы в исходной строке. Если буква была в верхнем регистре, она будет преобразована в нижний регистр, и наоборот.
Результатом будет строка 'hELLO, wORLD!'.
#для_начинающих
Сцепление исключений
Сцепление исключений (exception chaining) позволяет сохранять информацию об исключении, которое произошло во вложенном блоке кода, в исключении более высокого уровня. Это полезно для отслеживания причин ошибок и обеспечения более полной информации о том, что произошло.
В примере на картинке, если возникает ZeroDivisionError
, мы попадаем в блок except
, а затем выполняем вложенный код, который вызывает ValueError
. С помощью ключевого слова from
мы указываем, что исключение ValueError
является следствием (частью) исключения ZeroDivisionError
. Таким образом, информация об исключении ZeroDivisionError
сохраняется.
#для_продвинутых
Функция tell()
Функция tell()
используется для получения текущей позиции указателя в потоке данных. Она применяется чаще всего при работе с файлами, но также может использоваться с другими типами потоков, например, сокетами или консольным вводом.
Возвращаемое значение: целое число, указывающее положение указателя в байтах от начала потока.
Аргументы: tell()
не принимает никаких аргументов.
#для_начинающих
Сокращение ссылок прямо в коде
Иногда возникает необходимость сделать ссылку более короткой. Для этого пригодится библиотека pyshorteners — с помощью трех строк кода и сервиса tinyurl она позволяет быстро создать короткую ссылку.
Узнаем количество фотографий в папке
Вы можете использовать модуль os в Python для получения списка файлов в папке и подсчета количества файлов с расширением изображения.
Просто замените /путь/к/папке на фактический путь к вашей папке с фотографиями. Код будет подсчитывать количество файлов с расширениями .jpg, .jpeg, .png и .gif. Если вам нужно учитывать другие типы файлов, вы можете добавить соответствующие расширения в список photo_extensions.
Сравниваем 2 лица на фото с помощью Python
Для сравнения двух лиц на фото в Python можно использовать библиотеку face_recognition
.
В этом примере мы сначала загружаем изображения лиц и находим лица на изображениях с помощью функции face_locations()
.
Затем мы кодируем найденные лица с помощью функции face_encodings()
и сравниваем их между собой с помощью функции compare_faces()
. Результат сравнения - список булевых значений (True или False), которые сообщают, совпадают ли два лица на фото.
В чем разница между is() и == в Python?
Операторы is и == в Python выполняют похожие функции, но работают немного по-разному. И если вы новичок, используете сравнения в коде, стоит понимать разницу. Это поможет реже прибегать к рефакторингу и дебагу.
Смотреть статью
Ищем опечатки
Пакет spellchecker
позволяет отыскать ошибки в тексте, а также может предложить варианты исправлений. В примере проходимся по списку из двух слов, из которых одно ('therre') написано с опечаткой. Функция correction
замечает это и предлагает одно самое вероятное исправление, а candidates
— несколько.
Пакет поддерживает шесть языков.
Документацию можно найти здесь.
❗️Как развиваться 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