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
​​Транспонирование двумерного массива данных

Чтобы поменять местами строки и столбцы матрицы, созданной с помощью встроенных типов данных, воспользуйтесь функцией 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 есть оператор звездочки – расширенная операция распаковывания последовательности. Переменной со звездочкой присваивается часть списка, содержащая все неприсвоенные элементы, соответствующие этой позиции
​​Сортировка словаря по значениям

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

Многие в курсе про генераторы списков(а если нет, то вот наш пост). Но слышали ли вы о генераторах словарей? Такие генераторы удобны для начальной инициализации значений последовательностей.
​​Преобразование двух списков в словарь

У нас имеется два списка. Один из них содержит названия городов, а второй — их столиц. Как преобразовать эти два списка в словарь? Для этого понадобится функция zip():
​​Поиск подстроки в строке

Pегулярное выражение — это строка, задающая шаблон поиска подстрок в тексте. В Python есть встроенный модуль, позволяющий работать с регулярными выражениями, — re, который содержит функцию search. Она позволит вам найти подстроку в строке
​​Конкатенация списка строк

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

Более эффективный подход к решению этой задачи заключается в использовании функции join():
​​Изменение типа данных в списке

Представим, что вы прочитали из файла список чисел, изначально все эти числа имеют строковый тип данных, чтобы работать с ними - нужно превратить их в целое число, одно из решений данной задачи - использование функции map():
​​Использование анонимных функций

Иногда именованию функции не стоит уделять особого внимания. Например, если вы уверены, что она будет использована только раз. Для таких случаев Python предлагает применять анонимные функции, также называемые лямбда-функциями.
​​Улучшение читаемости больших чисел

Вы можете разделять цифры знаком подчеркивания. Это сделает большое число более читаемым, в то время как математически это не повлияет на синтаксис, поэтому вы по-прежнему можете выполнять арифметические операции как обычно:
​​Генерация перестановок для итерируемого объекта

Функция permutations модуля itertools возвращает итератор с последовательными перестановками из элементов входной последовательности iterable. Каждая комбинация заключена в кортеж с длинной r элементов.
Если r не указано или None, тогда по умолчанию r равна длине iterable и генерируются все возможные перестановки полной длины.
​​Улучшения в проверке типов в python 3.10

Python 3.10 включает много улучшений в проверке типов, среди них оператор объединения типов, синтаксис которого теперь чище.

Кроме того, это простое улучшение не ограничивается только аннотациями типа, оно может применяться с функциями isinstance() и issubclass():
​​Синтаксис менеджера контекста в python 3.10

Контекстные менеджеры отлично подходят, чтобы открывать и закрывать файлы, работать с соединениями баз данных и делать многое другое, а в Python 3.10 они стали немного удобнее. Изменение позволяет в скобках указывать несколько контекстных менеджеров, что удобно, если вы хотите создать в одном операторе with несколько менеджеров: