+1 в копилку годных каналов про Python
С @python_practics освоишь Python гораздо проще:
📌 полезные сниппеты кода для твоих задач
📌 теория Python понятным языком с примерами
📌 вопросы из собеседований
📌 бесплатные книги и курсы по Python
📌 тесты и опросы для тех, кто не запоминает сухую инфу
Функция compress
Функция compress
из itertools
используется для фильтрации элементов входной последовательности на основе соответствующих элементов булевой последовательности.
Код с картинки создает новый список, включающий только элементы data
, для которых соответствующее значение в selectors
является True
. В данном случае результат будет [1, 3, 5]
.
#для_начинающих
Пишем приложение на Python для подготовки к собеседованиям по Python
На конец 2023 года язык программирования Python является самым популярным по индексу TIOBE.
Смотреть статью
#Вопросы_с_собеседования
Реализуйте алгоритм сортировки слиянием (Merge Sort) на Python. Напишите код и объясните, как работает этот алгоритм. Расскажите о его сложности и возможных оптимизациях.
Объяснение:
Алгоритм сортировки слиянием (Merge Sort) использует стратегию «разделяй и властвуй». Он состоит из двух основных шагов:
Разделение (Divide): Массив разделяется на две равные (при четном числе элементов) или почти равные (при нечетном) части. Этот процесс рекурсивно выполняется для каждой из подпоследовательностей.
Слияние (Merge): Отсортированные подпоследовательности сливаются обратно в один отсортированный массив.
Сложность:
Временная сложность: O(n log n) в худшем, лучшем и среднем случаях.
Пространственная сложность: O(n).
Оптимизации:
— При реализации можно использовать вставочную сортировку для маленьких подмассивов, так как у нее меньшая константа в асимптотике.
— Если массив уже отсортирован, можно добавить проверку и пропустить шаг сортировки.
— Вместо копирования подмассивов при каждом рекурсивном вызове можно использовать вспомогательный массив для слияния, что уменьшит использование памяти.
frozensetfrozenset
представляет собой неизменяемое множество. Основное отличие между set
и frozenset
заключается в том, что set является изменяемым типом данных, тогда как frozenset
не может быть изменен после создания.
Вот несколько ключевых особенностей frozenset
:
Неизменяемость: Это означает, что вы не можете добавлять, удалять или изменять элементы в frozenset
после его создания.
Хешируемость: Поскольку frozenset
неизменяем, он является хешируемым, что означает, что его можно использовать в качестве ключа в словарях и элемента множества.
Обратите внимание, что, поскольку frozenset
не поддерживает изменения, некоторые методы, которые изменяют множество (например, add
, remove
, discard
), не применимы к frozenset
. Однако, вы можете выполнять операции, возвращающие новые frozenset
, такие как объединение и пересечение.
#для_начинающих
🔥 Ключевой навык востребованных дата-инженеров
Освойте его, чтобы вырасти в доходе всего за 4 месяца на онлайн-курсе «Spark Developer» от OTUS.
💻 После курса вы сможете:
— Разрабатывать приложения Spark
— Разрабатывать модели ML на Spark и выводить их в Production
— Запускать Spark в Hadoop и Kubernetes
— Писать тесты для Spark-приложений
— Использовать Spark для обработки табличных, потоковых, гео-данных и графов
— Настраивать мониторинг Spark-приложений
Вы можете заранее бесплатно получить полную программу обучения, чтобы убедиться, что она вам подходит. Также курс доступен для приобретения в рассрочку.
⏩ Оставьте заявку прямо сейчас и получите 3 полезных урока от экспертов курса в подарок: https://clck.ru/36yaHH
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
memoryview() memoryview()
в Python предоставляет объект для доступа к внутреннему представлению данных в виде буфера без копирования. Этот объект позволяет вам просматривать байты объекта, не копируя их, а также выполнять различные операции на уровне байтов.memoryview()
также может использоваться для работы с массивами и другими объектами, поддерживающими буферный интерфейс в Python.
Этот инструмент особенно полезен, когда вам нужно работать с большим объемом данных, и вы хотите избежать копирования данных, что может быть затратным с точки зрения времени и ресурсов.
#для_начинающих
pow()
В Python функция pow()
используется для вычисления степени числа. Вот как она работает:
result = pow(x, y, z)
#Вопросы_с_собеседования
Напишите функцию, которая принимает на вход список словарей, представляющих собой записи о студентах. Каждый словарь содержит ключи 'name', 'age' и 'grade'. Функция должна возвращать средний возраст студентов и среднюю оценку. Напишите код и объясните, как бы вы обработали случаи, когда в словарях отсутствуют ключи или значения не являются числами.
Объяснение:
В этой функции мы проходим по списку словарей, проверяем наличие ключей 'name', 'age' и 'grade' и их типы. Если данные валидны, добавляем их к общей сумме, чтобы затем посчитать средние значения.
#Вопросы_с_собеседования
Объясните, что делает данная функция (первая картинка), оптимизируйте ее, и напишите тесты для проверки ее корректности.
Что делает функция:
Данная функция some_function
принимает список чисел input_list
, проходится по каждому элементу в списке, проверяет, является ли элемент четным числом, и если да, то добавляет квадрат этого числа в новый список result
. В конце функция возвращает этот новый список.
Оптимизация кода:
Мы можем использовать list comprehension для более компактной записи этой функции:
def optimized_function(input_list):
return [item ** 2 for item in input_list if item % 2 == 0]
def general_function(iterable):
return (item ** 2 for item in iterable if item % 2 == 0)
unittest
для этого (вторая картинка).
Читать полностью…
⚡️Хакатон Brand Analytics ML Сontest
Компания Brand Analytics - разработчик лидирующей системы мониторинга соцсетей и СМИ на рынках России и СНГ, приглашает всех желающих принять участие в контесте и разработать решение, способное генерировать текст суммаризации комментариев под постами в социальных сетях.
Что ждёт участников?
🔹 Борьба за призовой фонд размером в 200 000 рублей;
🔹 Обратная связь от с экспертов крупной IT-компании;
🔹 Возможность проявить себя и продемонстрировать свои скиллы;
🔹 Новый кейс в портфолио, созданный в рамках решения реальной задачи.
📆Дата проведения: 4 - 25 декабря
📍Формат: онлайн
Подробная информация и регистрация: https://tglink.io/2d6d3099988a?erid=LjN8K46n9
Реклама. ООО "АКСЕЛЕРАТОР ВОЗМОЖНОСТЕЙ". ИНН 9704005146.
#Вопросы_с_собеседования
Объясните, что такое обработка исключений в Python, и предоставьте пример кода, демонстрирующий использование блока try-except.
Обработка исключений в Python позволяет программисту обрабатывать и управлять ошибками в коде. Блок try
содержит код, который может вызвать исключение. Если исключение происходит, выполнение кода переходит к блоку except
, который содержит обработчики конкретных типов исключений.
Блок else
выполняется, если в блоке try
не возникло исключение.
Блок finally
выполняется всегда, независимо от того, произошло исключение или нет. Этот блок используется, например, для освобождения ресурсов.
В примере на картинке в функции divide_numbers
представлен пример деления двух чисел с использованием блока try-except
. В случае деления на ноль выводится сообщение об ошибке. Если переданы нечисловые значения, программа сообщает об ошибке типа. В блоке else выводится сообщение об успешном выполнении операции, а в блоке finally
выводится сообщение, которое всегда выполняется.
Есть тип мужчин, которым сложно общаться
Знакомиться или начать диалог - особенно сложно. И по работе, и с девушками.
Слишком много мыслей — "Что обо мне подумают другие?".
Из-за этого трудно говорить с руководителями, коллегами и новыми людьми. Иногда сложно честно общаться с родителем.
А уж самое сложное — знакомиться и общаться с интересными девушками. Сразу возникает застенчивость.
Сложно показать девушке свой сексуальный интерес. В итоге пообщаемся "как друзья"
Что стоит глубоко за этой сложностью в общении?
Ведь часто такой парень довольно умен. И проблема не в речи.
Внутри этой проблемы есть излишнее стремление к одобрению. Стремление быть правильным, быть хорошим. Ощущение, что я недостоин и не могу быть собой.
Фактически это установки и эмоциональные ограничения, сформированные в детстве через родителей.
Выход Один. Это совсем не просто. Но проверено многими:
1 — Надо оцифровать и увидеть в себе бессознательные ограничения. Это по сути контр-интуитивно. И дальше:
2 — Начать впервые ради себя ДЕЛАТЬ то, в чём ты раньше себя ограничивал. Только новый опыт реально меняет установки.
Новые ДЕЙСТВИЯ ради себя - автоматически поднимут твоё состояние значимости.
Через это появляется сила, решительность и удовольствие от себя.
Становится легче делать всё новое. В том числе общаться!
Волшебные таблетки здесь не помогут. Это не просто.
Есть специальный чат-бот в ТГ. Который помогает оцифровать свои установки. И поможет начать ДЕЛАТЬ ради себя.
В боте большой механизм в форме игры. Там есть задания, видео и напоминания.
Это очень крутой бот. Попробуйте пройти.
@anton_lovebot
Иногда это реально влияет на всю жизнь.
Кто уже проходил? -🔥
Как получить размер папки с помощью Python?
Чтобы получить размер каталога, пользователь должен пройти по всей папке и добавить размер каждого файла, присутствующего в этой папке, и покажет общий размер папки.
Другие способы решить данную задачу можно найти здесь.
16-, 8- и 4-битные форматы чисел с плавающей запятой
Очень подробная и интересная статья.
Смотреть статью
Метод math.perm()
Метод math.perm() в Python возвращает количество способов выбрать k элементов из n элементов с порядком и без повторения.
Синтаксис:
math.perm(n, k)
n
: Количество элементов из которых выбираются k
элементов.k
: Количество элементов, которые выбираются.Начните изучение архитектуры ПО с бесплатного открытого урока «Модели взаимодействия или модели хранения данных» от OTUS.
На вебинаре:
- рассмотрим различные типы хранилищ: реляционные базы данных, NoSQL-базы и хранилища файлов;
- узнаем, как выбрать наиболее подходящий тип хранилища для различных сценариев и требований;
- изучим популярные модели CQRS и Event Sourcing.
Занятие пройдёт 20 декабря в 20:00 мск и будет приурочено к старту курса «Software Architect». После урока вы сможете продолжить обучение в рассрочку по специальной цене.
Регистрируйтесь бесплатно прямо сейчас и ставьте событие в календарь, чтобы ничего не пропустить: https://otus.pw/vcnH/Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Метод swapcase()
Метод swapcase()
в Python является встроенным методом строк (str), который создает новую строку, меняя регистр каждой буквы в исходной строке. Если буква была в верхнем регистре, она будет преобразована в нижний регистр, и наоборот.
Результатом будет строка 'hELLO, wORLD!'.
#для_начинающих
Ruff
Ruff — это новый, быстроразвивающийся линтер Python кода, призванный заменить flake8 и isort.
Основным преимуществом Ruff является его скорость. Ruff в 10-100 раз быстрее аналогов (Линтер написан на Rust). В сравнении с flake8, автор заявляет о практически полном совпадении с набором правил инструмента и нативной реализацией популярных плагинов (flake8-bugbear и т.д.). Также Ruff совместим с Black «из коробки».
Ruff может форматировать код. Например, он автоматически удаляет неиспользуемые импорты. Что касается сортировки и группировки строк импорта, то она практически идентична isort.
Документация лежит здесь.
#для_продвинутых
#Вопросы_с_собеседования
Реализуйте алгоритм поиска в ширину (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 применяется в задачах поиска кратчайших путей в невзвешенных графах.
Он также используется в задачах, связанных с обходом графов, например, в нахождении компонент связности.
Метод __getitem__
Метод __getitem__
является частью протокола индексации, который позволяет объекту быть индексируемым, как это делается, например, для списков или словарей. Этот метод вызывается при использовании квадратных скобок []
для доступа к элементам объекта.
Этот метод также используется при работе с срезами. Если вы хотите, чтобы ваш объект поддерживал срезы, вы также можете реализовать метод __getitem__
с тремя аргументами: self
, start
, stop
.
#для_начинающих
#Вопросы_с_собеседования
Напишите функцию, которая принимает на вход строку и возвращает количество уникальных слов в этой строке. Считайте, что слова разделяются пробелами, знаками препинания должны быть удалены. Напишите код и расскажите, как вы обрабатываете знаки препинания. Какие дополнительные оптимизации можно внести?
Объяснение:
В этом коде (первая картинка) мы используем string.punctuation
для определения знаков препинания и str.translate()
для удаления их из строки. Затем мы приводим всю строку к нижнему регистру и разбиваем ее на слова, считая количество уникальных слов с использованием множества (set).
Оптимизации (вторая картинка):
Мы могли бы использовать регулярные выражения для более точного удаления знаков препинания и разделения слов. Вместо создания промежуточного списка words
, мы могли бы сразу подсчитывать уникальные слова при проходе по строке, что сэкономило бы память.
Не трогайте, это на Новый год!
Профессия «Python-разработчик» 🐍
🎁 Скидка до 30 000 рублей и кэшбек на карту до 25 000 рублей при успешном прохождении обучения!
Освойте один из самых популярных языков для бэкенда, научитесь создавать полноценные сайты и веб-приложения и реализовать внутреннюю логику работы программ на фреймворке Django.
Уже во время обучения вы вступите в программу «Карьерный трек», чтобы найти свою первую работу в IT.
📌 Пройдите 5 бесплатных уроков и поймите, подходит ли вам профессия и стоит ли продолжать!
Реклама. ООО "ХЕКСЛЕТ РУС". ИНН 7325174845. erid:LjN8K3P5Q
#Вопросы_с_собеседования
Напишите функцию, которая принимает на вход строку и возвращает количество уникальных слов в этой строке. Считайте, что слова разделяются пробелами, знаками препинания должны быть удалены. Напишите код и расскажите, как вы обрабатываете знаки препинания. Какие дополнительные оптимизации можно внести?
Объяснение:
В этом коде мы используем string.punctuation
для определения знаков препинания и str.translate()
для удаления их из строки. Затем мы приводим всю строку к нижнему регистру и разбиваем ее на слова, считая количество уникальных слов с использованием множества (set).
Оптимизации:
Мы могли бы использовать регулярные выражения для более точного удаления знаков препинания и разделения слов. Вместо создания промежуточного списка words
, мы могли бы сразу подсчитывать уникальные слова при проходе по строке, что сэкономило бы память.
💻 Определяем ip адрес своего компьютера
Этот код использует библиотеку requests для отправки HTTP-запроса к веб-сервису ipify, который предоставляет API для определения публичного IP-адреса пользователя. Код написан в форме функции get_public_ip, что делает его удобным для повторного использования.
Использование блока try-except обеспечивает обработку исключений, которые могут возникнуть при запросе (например, проблемы с подключением к интернету). Если запрос успешен, функция возвращает IP-адрес, иначе возвращает сообщение об ошибке.
#Вопросы_с_собеседования
Напишите функцию на Python, которая принимает на вход строку из слов, разделенных пробелами, и возвращает новую строку, в которой каждое слово написано задом наперед. Например, для входной строки "Hello World" функция должна вернуть "olleH dlroW".
Решение:
В начале кода мы используем метод split()
, чтобы разбить входную строку на список слов. Это делается по пробелам, предполагая, что слова разделены пробелами. Затем мы используем генератор списка (list comprehension), чтобы перевернуть каждое слово в списке. word[::-1]
— это способ перевернуть строку с помощью среза. Далее мы используем метод join()
, чтобы объединить перевернутые слова обратно в строку, разделяя их пробелами и, наконец, возвращаем полученную строку.
Метод str.expandtabs()
Метод str.expandtabs()
используется для замены символов табуляции ('\t') в строке на пробелы в соответствии с заданным размером шага табуляции. Метод принимает один аргумент — tabsize
, который указывает количество пробелов, на которое следует заменять каждый символ табуляции.
#для_начинающих
#Вопросы_с_собеседования
У вас есть список словарей, представляющих информацию о книгах. Каждый словарь содержит поля «название» (title), «автор» (author) и «год выпуска» (year). Напишите функцию на Python, которая принимает такой список книг и возвращает словарь, в котором ключами являются года выпуска, а значениями — списки книг, выпущенных в этот год. Книги в каждом списке должны быть упорядочены по алфавиту по названию.
Решение:
1. Используем defaultdict(list)
, чтобы автоматически создавать пустой список для каждого года.
2. Книги сортируем по названию перед группировкой, чтобы списки книг в каждом году были упорядочены по алфавиту.
3. Проходим по отсортированным книгам и добавляем их в соответствующие списки годов в словаре.
Разработчики создали ChatGPT, БЕЗ ОГРАНИЧЕНИЙ ПО ЗАПРОСАМ.
Он может:
-Кодить и обучать кодингу
-Стать репетитором по английскому
-Создавать контент план
-Быть психологом, СММщиком, мотиватором
-Писать рефераты/рассказы/песни/стихи/статьи на любые темы
-Создать резюме
-Объяснить любую тему
Возможности ограничены только вашей фантазией. @NeuroConnect_Bot
⁉️ Как аналитику обрабатывать данные из разных источников практически в реальном времени?
Узнайте на бесплатном открытом уроке «Как на Spark Structured Streaming работать с данными в HDFS и Kafka?» от OTUS.
💻 На вебинаре:
— узнаем, какие источники данных могут быть обработаны стриминговым API Spark;
— рассмотрим конкретные примеры с данными на HDFS и Kafka;
— разберёмся, как осуществить подключение к таким источникам;
— научимся группировать данные.
👉 Занятие пройдёт 4 декабря в 20:00 мск в рамках курса «Spark Developer». После урока вы сможете продолжить обучение на курсе. Оплата доступна в рассрочку.
🔥 Для бесплатного участия и получения записи регистрируйтесь прямо сейчас: https://clck.ru/36psVq
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru