Сортировка вставками
Как и сортировка выборкой, этот алгоритм сегментирует список на две части: отсортированную и неотсортированную. Алгоритм перебирает второй сегмент и вставляет текущий элемент в правильную позицию первого сегмента.
Предполагается, что первый элемент списка отсортирован. Переходим к следующему элементу, обозначим его х. Если х больше первого, оставляем его на своём месте. Если он меньше, копируем его на вторую позицию, а х устанавливаем как первый элемент.
Переходя к другим элементам несортированного сегмента, перемещаем более крупные элементы в отсортированном сегменте вверх по списку, пока не встретим элемент меньше x или не дойдём до конца списка. В первом случае x помещается на правильную позицию.
Время сортировки вставками в среднем равно O(n²), где n — количество элементов списка.
Учишь Python, но как дело доходит до собственного кода — всё, кирдык? 😥
На форумах только одно: «Больше практиковаться!» А толку? Ноль понимания и никакой поддержки от профи…
Плавали - знаем)) Поэтому специально для тебя - чат Python-щиков 🤝
Что получишь?
1️⃣ Сможешь задавать любые вопросы без страха и осуждения и получать ответы за минуты, а не часы поиска в инете
2️⃣ Регулярные плюшки в виде стримов от препода с 15-ти летним опытом
3️⃣ Общение с единомышленниками и заряд мотивации
➡️ А еще, забирай в закрепе БЕСПЛАТНЫЙ вводный курс по Python
Короче, всё для прокачки! Залетай к нам — ссылка на чат (тык)
Валидаторы данных
Не стоит писать собственные регулярные выражения для валидации почты и URL.
Модуль validators
даёт возможность использовать уже готовые валидаторы для самых распространенных задач. Документация доступна здесь.
Конвертируем словарь в список в Python
Благодаря следующему примеру кода с картинки мы можем с легкостью преобразовать наш в словарь в список.
Как сделать из Python-скрипта исполняемый файл
Исполняемый файл — это файл, который может быть установлен или запущен на компьютере без использования дополнительного программного обеспечения или библиотек.
Смотреть статью
Узнаем сколько всего опредленных букв в строке
Один из способов узнать количество определенных букв в строке максимально быстрым методом – использовать метод count
для строки. Этот метод принимает символ или подстроку и возвращает количество их вхождений в строку.
Этот метод является достаточно быстрым, так как использует внутренние оптимизации CPython, которые работают на низком уровне. Он также не требует дополнительной памяти, за исключением простой переменной, используемой для хранения результата.
Бинарный поиск
Бинарный поиск — это эффективный алгоритм поиска элемента в отсортированном массиве. Он работает путем разделения массива пополам и сравнивает искомый элемент с элементом в середине массива. В зависимости от результата сравнения, половина массива, в которой элемент точно не может находиться, исключается из дальнейшего поиска. Этот процесс повторяется, пока не будет найден элемент или пока остается только один элемент в массиве.
В этом примере функция binary_search
принимает отсортированный массив arr
и искомый элемент target
. Она ищет элемент в массиве и возвращает его индекс, если он найден, и -1, если элемент отсутствует. Каждая итерация сужает диапазон поиска путем сравнения среднего элемента с искомым элементом и сдвига границ поиска в соответствии с результатом сравнения.
Введение в машинное обучение с помощью scikit-learn (перевод документации)
Смотреть статью
Построение горизонтальной гистограммы с помощью seaborn
Слева представлен код для построения гистограммы, справа результат работы нашей программы.
Библиотека FeatherFeather
— это библиотека для эффективного чтения и записи таблиц данных в двоичный формат. Она использует формат Apache
Arrow
для сериализации данных, что позволяет быстро читать и записывать данные без потери информации.
В этом примере мы использовали две основные функции библиотеки:
- feather.write_dataframe()
: записывает таблицу данных в файл формата Feather
.
- feather.read_dataframe()
: читает таблицу данных из файла формата Feather
.Feather
позволяет быстро и эффективно обмениваться данными между Python и R, а также обеспечивает быстрое чтение и запись таблиц данных на диск.
Обучите свою первую ML-модель!
✅ Интенсив для начинающих разработчиков ML «Машинное обучение на службе Data Science» от Otus.
Научитесь решать задачи классификации методами ML
Обучите свою первую модель для решение задачи классификации рукописных цифр
👉 Регистрация: https://otus.pw/1kC2/
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
@cached_property
: Кешируем результат функции как атрибут
В Python 3.8 в модуле functools появился новый мощный декоратор - @cached_property
. Он может превратить метод класса в свойство, значение которого вычисляется один раз, а затем кэшируется как обычный атрибут на протяжении всего существования экземпляра.
В приведенном выше коде мы оптимизировали метод area через свойство @cached_property
. Таким образом, нет повторных вычислений для circle.area одного и того же неизменного экземпляра.
Управление экспортами
В некоторых языках имеются очень чёткие механизмы экспорта из модулей переменных, методов, интерфейсов. К примеру в Go экспортируются только сущности с именами с большой буквы. В Python другая картина — экспортируется всё. Но только не при использовании атрибута __all__
.
В примере на картинке экспортируется только функция hja. А если оставить атрибут __all__
пустым, при попытке экспорта из модуля ничего не будет экспортировано, но возникнет ошибка AttributeError
.
Подготовка к Новому году – это волнительно и приятно.
Но давайте совместим приятное с полезным.
Например, создадим телеграм-бот для новогодних поздравлений!
18 декабря на вебинаре «Телеграм-бот своими руками» вы узнаете:
- Как устроен телеграм-бот
- Как создать телеграм-бот на сервере Telegram
- Как написать бэкенд для телеграм-бота на базе фреймворка Aiogram
Мастер-класс проведёт Кирилл Панфилов, преподаватель OTUS, классный программист и автор ютуб-канала [dirty-python]
Приглашаем начинающих Python-разработчиков, разработчиков на Jave и других языках, а также всех, кто интересуется разработкой и IT.
Результаты вебинара: функционирующий бот, прокачка навыков программирования на Python, доступ к закрытому сообществу, а ещё – скидка на курсы и полезные материалы.
18 декабря, 19:00 МСК
Записаться на вебинар - https://otus.pw/dvll/?erid=LjN8K7hvn
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.
Получаем историю браузера 😏
browser-history— это простой, не требующий никаких зависимостей, удобный для разработчиков пакет Python для извлечения (почти) всей истории любого браузера на (почти) любой платформе.
Документация пакета лежит здесь.
Преобразование WORD в PDF с помощью Python
Устали от необходимости использовать онлайн-конвертеры docx в PDF с дрянным интерфейсом и ограничениями на конвертацию, тогда начинайте пользоваться модулем docx2pdf.
Установка модуля - pip install docx2pdf
Подробнее можно ознакомиться здесь.
Метод get
у словарей
У словарей есть метод get
, который возвращает значение по переданному ключу.
Если такого ключа в словаре нет, исключение не выбрасывается, а возвращается значение по умолчанию, которое передаётся вторым аргументом, или же None
, если второй аргумент не передан.
В примере мы не передаём второй аргумент, и в переменную name попадает None
. Полезнее было бы передать ещё какую-нибудь строку в метод get
, и она бы подставилась в name
.
⚡️ В сети начали массово сливать курсы и книги известных онлайн школ
Вот отсортированная база с тонной материала(постепенно пополняется):
БАЗА (4687 видео/книг):
(363 видео, 87 книги) — Python
(415 видео, 68 книги) — Frontend
(143 видео, 33 книги) — ИБ/Хакинг
(352 видео, 89 книги) — С/С++
(343 видео, 87 книги) — Java
(176 видео, 32 книги) — Git
(293 видео, 63 книги) — C#
(174 видео, 91 книги) — DevOps
(167 видео, 53 книги) — PHP
(227 видео, 83 книги) — SQL/БД
(163 видео, 29 книги) — Linux
(107 видео, 43 книги) — СисАналз
(181 видео, 32 книги) — Go
(167 видео, 43 книги) — Kotlin/Swift
(112 видео, 24 книги) — Flutter
(137 видео, 93 книги) — DS/ML
(113 видео, 82 книги) — GameDev
(183 видео, 37 книги) — UI/UX
(129 видео, 73 книги) — QA
(213 видео, 63 книги) — Rust
(121 видео, 24 книги) — Ruby
Скачивать ничего не нужно — все выложили в Telegram
Быстрая сортировка
Быстрая сортировка (quicksort) — это один из наиболее известных и широко применяемых алгоритмов сортировки. Она основана на использовании стратегии "разделяй и властвуй".
В этом коде мы выбираем элемент в середине списка в качестве "опорного". Затем мы создаем три списка: один для элементов меньше опорного, один для элементов равных опорному, и один для элементов больше опорного.
Мы рекурсивно применяем быструю сортировку к списку элементов, которые меньше и больше опорного элемента. Это продолжается до тех пор, пока не останется список, который нужно сортировать. В конце, мы объединяем отсортированные списки вместе.
Переводим mp3 в mov
Для перевода формата аудио из mp3 в mov вам понадобится использовать специализированные библиотеки для обработки аудио файлов в Python. Одной из таких библиотек является FFmpeg.
В этом примере мы используем функцию input() из библиотеки ffmpeg для указания входного файла, а затем функцию output() для указания выходного файла. Затем мы запускаем процесс конвертации с помощью функции run().
exceptions
В Python и многих других языках программирования, exceptions
(исключения) — это механизм, который позволяет обрабатывать ошибки и нестандартные ситуации во время выполнения программы. Когда возникает ошибка, Python генерирует исключение. Если исключение не обрабатывается, программа может завершиться с ошибкой.
В данном примере кода, операция x = 10 / 0
вызовет исключение ZeroDivisionError
, так как нельзя делить на ноль. Однако благодаря конструкции try
и except
, программа не завершится с ошибкой. Вместо этого будет выведено сообщение «Произошла ошибка деления на ноль!».
Задача
У вас есть девять цифр: 1, 2, …, 9. Именно в таком порядке. Вы можете вставлять между ними знаки «+», «-» или ничего. У вас будут получаться выражения вида 123+45-6+7+89. Найдите все из них, которые равны 100.
Мне кажется, в таком виде его проще всего и писать и читать и тестировать. Тут у меня три функции: all_combinations — итератор, который выдает все числа для операций (в терминах задачи: вставляет пустые места); all_signs — выдаёт все возможные сочетания знаков + и - заданной длинны (для единообразия, это тоже итератор с рекурсией); perform_operations — выполняет операции.
Тут, конечно, просится решение, избавленное от if-ов и кодирования операций с помощью символов. Но это решение будет более громоздким, о нём можно рассказать, но и писать, и читать его дольше.
PyTorch
PyTorch — это библиотека машинного обучения. Она позволяет создавать нейронные сети и обучать их на графических процессорах, что ускоряет процесс обучения и улучшает точность моделей.
В этом примере мы загружаем датасет MNIST с рукописными цифрами, создаем простую нейронную сеть с двумя полносвязными слоями и функцией активации ReLU
, обучаем ее с помощью стохастического градиентного спуска, а затем тестируем результат на отложенных данных.
При этом мы используем функцию потерь CrossEntropyLoss
, которая подходит для задач классификации, и оптимизатор SGD
.
Использование речевых технологий Яндекса на примере аудиосообщений Telegram или чат-бот для распознавания аудиосообщений
Смотреть статью
Просмотр всех файлов в папке с помощью Python
В этом примере мы указываем путь к папке, которую нам нужно просмотреть, с помощью переменной folder_path
.
Затем мы вызываем функцию os.listdir()
, которая вернет список всех файлов и папок в указанной папке. Мы проходим циклом for
через этот список и выводим на экран имена файлов.
Работаем с датой и временем
С помощью следующего фрагмента кода вы сможете с легкостью узнать год/месяц/день/час/минуту/секунду настоящего времени.
Хотели узнать больше про инженерную команду Selectel?
Спешим познакомить вас с новым проектом ребят!
На этой страничке вы найдете:
— Ключевые ценности, на которые инженеры Selectel опираются в работе
— Подробную информацию о жизни ребят в компании: как устроены процессы и какие технологии используются
— Чем живут технические комьюнити
А также познакомитесь с базой знаний инженеров: докладами и статьями на Хабре!
Скорее переходите и читайте😉
Реклама, АО «Селектел», ИНН: 7810962785, ERID: 2VtzqvmVXKw
Преобразование PNG в PDF
Для начала установим библиотеку img2pdf - pip install img2pdf.
img2pdf— это пакет Python с открытым исходным кодом для преобразования изображений в формат pdf.
Подробнее ознакомиться с библиотекой img2pdf можно здесь.
Как можно объявить несколько присваиваний в одном выражении?
Оба варианта на картинке. В первой строке мы присваиваем переменным a, b, c соответственно значения 3, 4, 5, а во второй строке все переменные получают значение 3.
Передаём содержимое словаря
Две звездочки перед словарём позволяют передать его содержимое в функцию как аргументы. При этом ключи словаря — имена аргументов.
Это полезно при обработке словарей, а также для написания функций-обёрток.