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

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

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

Ссылка на канал: https://t.me/+QayZf6ccsQllZTYy
Download Telegram
Изменение списка срезом (ч.1)

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

Даже если хотим добавить один элемент, необходимо передавать итерируемый объект, иначе будет ошибка TypeError: can only assign an iterable

🔗 Python tricks
Изменение списка срезом (ч.2)

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

🔗 Python tricks
Именованные срезы

Чтобы избавится от «магических констант», особенно в случае, когда один и тот же срез надо применять многократно, можно задать константы с именованными срезами с пользованием специальной функции slice()()

Примечание: Nonе соответствует опущенному значению по-умолчанию. То есть [:2] становится slice(None, 2), а [1::2] становится slice(1, None, 2).

🔗 Python tricks
Конвертация одного типа коллекции в другой

В зависимости от стоящих задач, один тип коллекции можно конвертировать в другой тип коллекции. Для этого, как правило достаточно передать одну коллекцию в функцию создания другой.
🔗 Python tricks
Выход за границы индекса

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

Обращение к несуществующему индексу коллекции вызывает ошибку
🔗 Python tricks
Функция sorted()

Мы может использовать функцию sorted() для вывода списка сортированных элементов любой коллекции для последующее обработки или вывода.

Функция не меняет исходную коллекцию, а возвращает новый список из ее элементов. Не зависимо от типа исходной коллекции, вернётся список (list) ее элементов;
🔗 Python tricks
Функция partial

В Python модуль functools предоставляет функцию partial, которая позволяет создавать новую функцию путем фиксирования некоторых аргументов существующей функции. Это полезно, когда вы хотите использовать функцию с некоторыми предопределенными аргументами, чтобы уменьшить необходимость повторения кода или улучшить читаемость.

functools.partial позволяет легко создавать адаптированные функции для различных сценариев использования, где часть аргументов остается постоянной, а другие аргументы могут изменяться.
🔗 Python tricks
dateparser

dateparser — это библиотека Python, которая предоставляет удобные инструменты для разбора и анализа текстовых дат и времени. Она может автоматически определять формат даты и времени в текстовой строке и преобразовывать его в объект datetime. Это полезно, когда у вас есть текстовые описания дат и времени в разных форматах, и вы хотите их структурировать.

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

🔗 Python tricks
set.union

Метод set.union() возвращает новое множество с различными элементами из всех множеств. Если аргумент не передан в union(), он возвращает поверхностную копию множества.

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

Функция reversed() применяется для последовательностей и работает по другому.

Возвращает генератор списка, а не сам список.

Если нужно получить не генератор, а готовый список, результат можно обернуть в list() или же вместо reversed() воспользоваться срезом [: :-1].
🔗 Python tricks
Методы списка .sort() и .reverse()

У списка (и только у него) есть особые методы .sort() и .reverse() которые делают тоже самое, что соответствующие функции sorted() и reversed(), но при этом:

Меняют сам исходный список, а не генерируют новый.

Возвращают None, а не новый список.

Поддерживают те же дополнительные аргументы;
🔗 Python tricks
Pyppeteer

Pyppeteer — это библиотека для управления браузером с помощью Python с использованием инструмента Puppeteer, который изначально был разработан для Node.js. Puppeteer позволяет автоматизировать взаимодействие с веб-страницами, выполнять сценарии на основе браузера, выполнять скриншоты, создавать PDF-файлы и многое другое.

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

🔗 Python tricks
pprint()

Функция pprint() предназначена для красивого форматированного вывода данных.

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

Может принимать ширину вывода в количестве символов для лучшего форматирования.
Имеет параметры depth и compact для настройки уровня вложенности и режима компактного вывода.

Функционал pprint() доступен через модуль pprint в стандартной библиотеке.

🔗 Python tricks
ord()

Функция ord() возвращает целое число, представляющее символ Юникода. Эта функция принимает строку единичной длины в качестве аргумента и возвращает эквивалентность переданного аргумента в Юникоде.

🔗 Python tricks
Устойчивость сортировки

Допустим данные нужно отсортировать сначала по столбцу А по возрастанию, затем по столбцу B по убыванию, и наконец по столбцу C снова по возрастанию.

Если данные в столбце B числовые, то при помощи подходящей функции в key можно поменять знак у элементов B, что приведёт к необходимому результату.
А если все данные текстовые? Тут есть такая возможность.
Дело в том, что сортировка sort в Python устойчивая (начиная с Python 2.2), то есть она не меняет порядок «одинаковых» элементов.

Поэтому можно просто отсортировать три раза по разным ключам.

🔗 Python tricks
Дополнительная информация по использованию параметра key при сортировке

Перед тем, как сравнивать два элемента списка к ним применялась функция prepare_item, которая меняла знак у стоимости (функция применяется ровно по одному разу к каждому элементу. В результате при одинаковом первом значении сортировка по второму происходила в обратном порядке.

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

🔗 Python tricks
VisPy

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

После установки библиотеки, вы можете создать графические приложения с использованием VisPy. В примере на картинке создается окно с красным треугольником. VisPy предоставляет широкие возможности для создания 2D и 3D визуализаций, а также возможность работы с пользовательским вводом, анимациями и интерактивностью.

Вы можете найти дополнительные примеры и документацию на официальном сайте VisPy, чтобы более подробно изучить возможности этой библиотеки и начать создавать собственные визуализации.

🔗 Python tricks
Prophet

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

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

🔗 Python tricks
Set.pop

Метод pop() случайным образом удаляет элемент из множества и возвращает удаленный элемент. Если в множестве отсутствуют элементы, выдается TypeError.

🔗 Python tricks
Объединение строк, кортежей, списков, словарей без изменения исходных (ч.1)

Рассмотрим способы объединения строк, кортежей, списков, словарей без изменения исходных коллекций — когда из нескольких коллекций создаётся новая коллекция того же тип без изменения изначальных.

Объединение строк (string) и кортежей (tuple) возможна с использованием оператора сложения «+»

🔗 Python tricks
Объединение строк, кортежей, списков, словарей без изменения исходных (ч.2)

Для объединения списков (list) возможны три варианта без изменения исходного списка:
Добавляем все элементы второго списка к элементам первого, (аналог метод .extend() но без изменения исходного списка)
🔗 Python tricks