Python tricks | Хитрости Питона
5.76K subscribers
2.21K photos
26 videos
1 file
2.52K links
Здесь вы найдете лучшие практики и приёмы, которые используют опытные программисты.

Сотрудничество: @SIeep_Token

Мы на платформе: https://telegram.me/python_tricks

Ссылка на канал: https://t.me/+QayZf6ccsQllZTYy
Download Telegram
Ограничение итераций

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

🔗 Python tricks
Узнаем сколько всего опредленных букв в строке

Один из способов узнать количество определенных букв в строке максимально быстрым методом – использовать метод count для строки. Этот метод принимает символ или подстроку и возвращает количество их вхождений в строку.

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

🔗 Python tricks
Итерируемые объекты

В Python итерируемый объект — это объект, над которым производятся так называемые проходы (итерации). Например, как в цикле for.
Большинство наборных структур данных являются итерируемыми объектами. Это списки, кортежи, наборы. Например, ниже мы создаём список и проходимся по его элементам по очереди.

🔗 Python tricks
Yield

Другой способ создать generator — использовать функцию генератора. Мы берём ключевое слово yield, чтобы вернуть generator в функции.
Давайте посмотрим, как сработает эта функция на fib, где возвращается generator с n числами Фибоначчи. 

🔗 Python tricks
PySpark

PySpark — это Python API для Apache Spark. Он позволяет выполнять обработку больших данных в реальном времени в распределенной среде с помощью Python. Он также предоставляет оболочку PySpark для интерактивного анализа данных.

PySpark сочетает в себе удобство использования и простоту Python с мощностью Apache Spark, что позволяет обрабатывать и анализировать данные любого размера для всех, кто знаком с Python. PySpark поддерживает все функции Spark, такие как Spark SQL, DataFrames, Structured Streaming, Machine Learning (MLlib) и Spark Core.

Код с картинки создаст контекст Spark, прочитает набор данных из файла CSV с именем "data.csv" и выведет его в консоль.

🔗 Python tricks
Поток данных

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

🔗 Python tricks
Переводим mp3 в mov

Для перевода формата аудио из mp3 в mov вам понадобится использовать специализированные библиотеки для обработки аудио файлов в Python. Одной из таких библиотек является FFmpeg.

В этом примере мы используем функцию input() из библиотеки ffmpeg для указания входного файла, а затем функцию output() для указания выходного файла. Затем мы запускаем процесс конвертации с помощью функции run().

🔗 Python tricks
Быстрая сортировка

Быстрая сортировка (quicksort) — это один из наиболее известных и широко применяемых алгоритмов сортировки. Она основана на использовании стратегии "разделяй и властвуй".

В этом коде мы выбираем элемент в середине списка в качестве "опорного". Затем мы создаем три списка: один для элементов меньше опорного, один для элементов равных опорному, и один для элементов больше опорного.

Мы рекурсивно применяем быструю сортировку к списку элементов, которые меньше и больше опорного элемента. Это продолжается до тех пор, пока не останется список, который нужно сортировать. В конце, мы объединяем отсортированные списки вместе.

🔗 Python tricks
string.isdecimal

isdecimal() возвращает true, если все символы в строке являются десятичными символами. Если хотя бы один символ не является десятичным, возвращается False. Верхний и нижний индексы считаются цифровыми символами, а не десятичными. Если строка содержит эти символы (обычно написанные с использованием Юникода), isdecimal() возвращает False.

🔗 Python tricks
Атрибут context

Атрибут context — это специальный атрибут исключений в Python, который содержит ссылку на исключение, которое было вызвано перед текущим исключением. Этот атрибут используется при множественном вызове исключений, чтобы предоставить контекст для текущего исключения.

В коде на картинке функция g вызывает исключение ValueError. Функция f перехватывает это исключение и вызывает собственное исключение Exception.

🔗 Python tricks
Декораторы в Python: Способ разделения задач

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

Мы можем сами определить декораторов. А также есть множество замечательных встроенных декораторов, готовых к использованию.

Например, статические методы в классе Python не привязаны к экземпляру или классу. Они включены в класс просто потому, что они логически принадлежат ему.

🔗 Python tricks
Размещение вашего скрипта на Python на Ubuntu-инстансе

Мой любимый метод закачки скрипта на Python на инстанс Ubuntu — это использовать Git.

Если есть конфигурационные файлы, которые нужны на вашем Ubuntu-инстансе, и вы не хотите хранить их на github, для переноса пользуйтесь Amazon S3.

🔗 Python tricks
Функция islice()

islice() — это функция из модуля itertools, которая используется для создания итератора, возвращающего выбранные элементы из итерируемого объекта. Она похожа на срезы списков, но имеет некоторые отличия.

🔗 Python tricks
Установка Python3.7 и PIP

Для установки Python и PIP я бы рекомендовал пользоваться веб-SSH через дашборд Lightsail.

А в папке репозитория выполните следующую команду. Она запустит код, приведённый ниже и установит Python3.7 вместе с PIP.

🔗 Python tricks
Вычисляем время выполнения

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

🔗 Python tricks
Списковое включение (быстрый способ)

Списковое включение — самый эффективный способ итерации любого списка. Это итерирование однострочного списка с включением в него цикла. Посмотрите приведенный ниже пример кода, чтобы понять, как это работает.

🔗 Python tricks
Перебираем все возможные 8 значные пароли состоящие из букв и цифр с помощью Python

В этом примере используется модуль itertools, который позволяет генерировать все возможные комбинации символов из списка characters длиной password_length. Затем перебираются все комбинации и выводятся на экран.

Обратите внимание, что перебор всех возможных 8-значных паролей может занять большое количество времени, особенно если количество символов в characters большое. Будьте осторожны и убедитесь, что ваше намерение соответствует законам и этическим правилам.

🔗 Python tricks
Соединение списка и множества в словарь

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

Для создания словаря из списков и множеств нужно сначала объединить элементы в кортежи при помощи функции zip(), а затем создать словарь из этих кортежей при помощи функции dict().

fruit_prices будет содержать словарь {'apple': 1.20, 'banana': 0.80, 'orange': 1.50}.

🔗 Python tricks
Удаляем файл из папки на компьютере

Для удаления файла из папки на ПК в Python можно использовать модуль os.

Здесь сначала мы импортируем модуль os. Затем указываем полный путь к удаляемому файлу в переменной file_path. С помощью функции os.path.exists() проверяем, существует ли файл по указанному пути.

Если файл существует, мы удаляем его с помощью функции os.remove(). В противном случае выводим информацию, что такой файл не найден.

🔗 Python tricks
Cравнение 2 аудиосообщений

Для сравнения двух аудиосообщений в Python нужно использовать библиотеку для анализа звука, например, librosa или PyAudio.

Здесь мы загружаем два файла и вычисляем их характеристики MFCC (Mel Frequency Cepstral Coefficients), которые представляют собой набор коэффициентов, описывающих звуковое пространство. Затем мы вычисляем расстояние между характеристиками с помощью функции dtln из librosa.core. Результат будет выведен в консоль.

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

🔗 Python tricks