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

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

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

Ссылка на канал: https://t.me/+QayZf6ccsQllZTYy
Download Telegram
Как легко отсортировать объект по нескольким ключам?

Перед нами стоит задача отсортировать список машин. Но сделать это нужно не просто по названию бренда или году производства, а сразу по обоим полям.
Решить эту задачу можно очень просто с помощью operator.itemgetter(). В результате все бренды сгруппированы и отсортированы по возрасту.
Объединение словарей в python.

Начиная с Python 3.5 можно легко объединить словари. Будьте осторожны, если ключи будут пересекаться, то вы можете потерять данные.
С версии 3.9 объединение становится еще легче. Попробовать самому.
Списковые включения.

В python можно заменить громоздкие циклы, которые используются для заполнения списков. Самый простой пример использования списковых включений представлен в первом примере.
В примере 2 показано как можно добавить немного математики.
Вы даже можете использовать свои функции, как в примере 3.
Ну и куда без условного оператора?
Поиск наиболее часто встречающегося значения.

Очень эффективно решить этот вопрос можно с помощью модуля collections!
Обратите внимание, что нам возвращается список с кортежем внутри.
Функции all и any.

Названия этих функций говорят сами за себя. Функция all проверяет все ли элементы последовательности истинны. А функция any проверяет наличие хотя бы одной истинны.
Возврат нескольких значений

В python функция может вернуть более одной переменной без использования списка или словаря. Пример на скриншоте и по ссылке в кнопке.
Свап значений переменных.

Бывают ситуации, когда нужно поменять значения переменных местами. И чтобы не захламлять код временными переменными, можно воспользоваться данным способом(всё внимание на 16 строку)
__repr__

Метод __repr__() позволяет определять строковое представление, предназначенное для программиста и удобное при использовании во время отладки.
​​Форматирование констант списка.

Если вы всё еще записываете константы списка, словаря или множества в одну строку, то советую вам перестать)
Если вы пользуетесь git и будете вносить изменения в этот список, то в результате команды git diff будет сложно понять какой элемент был удален, добавлен или изменен.
​​Размещение запятой.

В продолжение вчерашней темы, хотел бы рассказать о запятой в списках. Как вы могли заметить в посте выше, в names2 последний элемент заканчивается запятой. Это очень важно! Это будет еще одной полезной привычкой добавление запятой после каждого элемента(даже последнего), тогда в следующий раз, когда вы захотите добавить новый элемент, вы не допустите дурацкой ошибки!
​​Легкая проверка на анаграммность.

Самым быстрым способом проверить, не являются ли строки анаграммами, будет через класс Counter
​​Транспонирование двумерного массива данных

Чтобы поменять местами строки и столбцы матрицы, созданной с помощью встроенных типов данных, воспользуйтесь функцией zip

Также, прошу вас реакциями проголосовать какой стиль скриншотов с кодом вам больше нравится.
​​Присвоение первого непустого значения из ряда

Следующая инструкция присвоит первый непустой (имеющий истинное значение) объект из множества объектов A, B и С. Или None, если все предыдущие объекты окажутся пустыми
​​Итерирование с использованием функции enumerate(ч1)

Функция range позволяет получить только индексы элементов списка. Функция enumerate генерирует кортежи, состоящие из двух элементов – индекса элемента и самого элемента. Эти кортежи можно распаковать еще в заголовке for
Получается короткий и понятный код!
В примере разберем как извлечь из списка элементы и их индекс
​​Итерирование с использованием функции enumerate(ч2)

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

Если вы обратитесь к несуществующему ключу словаря, то это вызовет исключение. Избежать этого можно, вызывая метод get. В примере ниже метод выдает None (по умолчанию) или заданное значение аргумента.
​​Удаление дубликатов в списке

Первое что приходит на ум — преобразовать список во множество и обратно. Это хороший и рабочий способ. Но если вам нужно сохранить последовательность, то этот способ не подойдёт. С этой задачей легко справится OrderedDict из модуля collections
​​Назначение переменных и функций по условию

Иногда элементы с условиями очень просты — в этих случаях лучше использовать тернарный оператор if/else:
X = 2 if Y else 3
В этом примере X присвоится 2, если Y будет истинно, иначе присвоится 3.
Ещё интереснее применение тернарного оператора в отношении функций
​​Объединение списков без циклов.

Это можно сделать двумя способами. Первый через стандартную функцию sum. Второй способ через применение модуля itertools. Он хоть и более громоздкий, но эффективней.
А какой способ выберете вы?
​​Распаковка последовательности при неизвестном числе элементов.

Для этого в Python есть оператор звездочки – расширенная операция распаковывания последовательности. Переменной со звездочкой присваивается часть списка, содержащая все неприсвоенные элементы, соответствующие этой позиции
​​Сортировка словаря по значениям

Распространена практика использования словарей в качестве таблиц для хранения данных. Сортировка данных словаря по значениям ключей, а не самим ключам, нередко ставит в тупик. Задача решается довольно просто при помощи соответствующего аргумента функции сортировки