Python на примерах
1.39K subscribers
411 photos
6 videos
145 links
Короткие уроки Python на примерах
Download Telegram
Почему pprint предпочтительнее print

Стандартная функция print() в Python справляется со своей задачей, но при выводе сложных вложенных объектов результат может оказаться нечитабельным и запутанным.

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

Использование pprint — must-have для любого Python-разработчика, который сталкивается с обработкой и отладкой нестандартных или объемных данных.
👍8❤‍🔥1
Фильтрация списка без использования циклов

Для решения этой задачи можно воспользоваться модулем itertools (документация: https://docs.python.org/3/library/itertools.html). Если у вас есть два списка — один с именами, а другой с идентификаторами (например, names и selectors), — вы можете отфильтровать элементы списка names, оставив только те, которые соответствуют значениям 1 в списке selectors.

Пример использования:

import itertools

names = ["Alice", "Bob", "Charlie", "David"]
selectors = [1, 0, 1, 0]

# Фильтрация с помощью itertools.compress
filtered_names = itertools.compress(names, selectors)

# Результат
print(list(filtered_names)) # Вывод: ['Alice', 'Charlie']


Этот подход позволяет эффективно фильтровать данные без явного использования циклов.
👍5👀2
Выражения-генераторы в Python

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

Преимущества выражений-генераторов
-Экономия памяти: элементы генерируются "на лету", что позволяет работать с большими данными.
-Ленивые вычисления: элементы вычисляются только при запросе.
-Универсальность: могут использоваться в любом контексте, где требуется итератор.

Когда использовать?
-Когда объем данных слишком велик для загрузки в память.
-Когда нужно обрабатывать данные по частям.
-Когда требуется ленивое вычисление элементов.
❤‍🔥6
Как резать списки без лишних копий? 🐍

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

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

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

P.S. Моржовый оператор (:=) появился в Python 3.8. Его так называют, потому что он похож на глаза и бивни моржа.
👍10🔥2
Правдивость объектов в Python

В Python объект считается ложным (False) только в случае, если он пуст. То есть, чтобы проверить, например, строку, кортеж или словарь на "пустоту", достаточно просто использовать его в логическом выражении, не проверяя явно длину. Ну и, конечно, 0 будет False, а все остальные числа — True.

Совет: используйте это поведение для более компактных проверок.
👍7
Проверка на вхождение подстроки в Питон

В Python для проверки, содержится ли элемент в списке, кортеже или словаре, можно использовать конструкцию if item in list. Но эта же проверка отлично работает и для строк! Так что можно легко узнать, есть ли подстрока в строке, с помощью той же простой записи.

Маленький лайфхак: это особенно полезно, когда нужно быстро найти вхождение в длинных строках или списках.
👍4
Функция vars() в Питон

Функция vars() возвращает атрибут __dict__, то есть словарь, содержащий пространство имен для модуля, класса, экземпляра или любого объекта, имеющего атрибут __dict__. Если вызвать vars() без аргументов, она будет работать как locals() и отобразит локальные переменные текущей области видимости.

Используйте vars() для быстрого доступа к атрибутам объектов или для отладки.
👍6
This media is not supported in your browser
VIEW IN TELEGRAM
По выходным делюсь полезными приложениями)

CmdF — это терминал-приложение, которое позволяет искать слова прямо внутри видеороликов на YouTube. Для поиска используется библиотека quiet.cpp и нечеткое сопоставление строк, что делает поиск более точным, даже если слова написаны с ошибками.

Это отличный инструмент для тех, кто часто работает с видео на YouTube и хочет быстро находить нужные фрагменты в длинных роликах!

https://github.com/dotvignesh/CmdF
This media is not supported in your browser
VIEW IN TELEGRAM
The Fuck

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

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

https://github.com/nvbn/thefuck
🔥7
Аргументы командной строки в Python

Когда запускаешь программу через терминал, можно передавать аргументы через пробел. В Python эти аргументы хранятся в списке argv из модуля sys. Первый элемент — это всегда имя самого скрипта, а все остальные элементы — это уже переданные аргументы.

Пример: это удобно для того, чтобы на лету передавать разные параметры в программу.
👍10
Сортировка объектов по нескольким ключам

Чтобы отсортировать объекты по нескольким ключам, можно использовать модуль operator. Например, сначала сортируем по возрасту, а потом по имени. Для этого с помощью operator.itemgetter() извлекаем нужные поля (возраст и имя) из каждого словаря в списке.

Такой подход позволяет легко настроить сортировку по нескольким параметрам в одном шаге.
👍4🤔4
Самый частый элемент в списке

Чтобы найти самый частый элемент в списке, используем функцию max(). В качестве первого аргумента передаем множество уникальных элементов из списка (так как в множестве не может быть повторений). Затем с помощью функции count() для каждого элемента считаем, сколько раз он встречается в списке. В результате max() выберет тот элемент, который встречается чаще всего.

Легкий способ найти "лидера" среди элементов списка.
👍3🔥3❤‍🔥1
Вывод строк текста не больше установленной ширины

Для того, чтобы ограничить вывод текста определенной шириной, можно использовать встроенную библиотеку textwrap и её функцию fill(). В качестве первого аргумента передаем текст, а вторым указываем максимальную ширину строки в символах.

Это удобный способ форматировать текст для консоли или вывода, чтобы не выходил за пределы экрана.
👍9🥰1
Switch-конструкции в Python

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

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

Это элегантный способ заменить switch и сделать код компактным и понятным!
🔥5👏5❤‍🔥1😐1
Дизассемблирование

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

С помощью dis можно увидеть, как Python интерпретирует ваши функции и операции, и это может помочь в оптимизации кода.
🔥3
Давайте разберёмся с расширенной итерационной распаковкой. Звучит сложно, но на деле просто.

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

Простой пример:

a, *b, c = [1, 2, 3, 4, 5]


Здесь a получит 1, b — список [2, 3, 4], а c — 5.

Очень удобный способ работы с коллекциями, когда нужно «выдернуть» несколько элементов из середины или конца.
👍8🔥4❤‍🔥2
Модуль inspect в Python — это настоящий инструмент для тех, кто хочет заглянуть за кулисы Python и понять, что происходит "по ту сторону кода". Он позволяет исследовать функции, классы и даже модули в вашем проекте.

Один из интересных методов — inspect.getsource(), который позволяет получить исходный код функции или класса. Пример:

import inspect

def example_func():
pass

print(inspect.getsource(example_func))


Это выведет исходный код функции example_func.

Также полезен метод inspect.getmodule(), который позволяет узнать, в каком модуле была определена та или иная сущность. Например:

import inspect
import math

print(inspect.getmodule(math.sqrt))


Этот код покажет, что sqrt определен в модуле math.

Модуль inspect — отличный помощник для тех, кто хочет понять, как работают библиотеки и глубже понять поведение кода в Python.
👍6❤1
Подчеркивание в числовых литералах — это полезная фишка Python 3, которая упрощает восприятие чисел. Оно помогает разделять большие числа на группы, например, для удобства чтения тысяч, миллионов или даже чисел в других системах счисления.

Пример:

num = 1_000_000  # миллион
hex_num = 0xFF_FF_FF # шестнадцатеричное число
bin_num = 0b1010_1011 # двоичное число


Это ничем не влияет на значение числа, но значительно улучшает его читаемость. Теперь большие числа выглядят гораздо проще для восприятия
🔥8👍4👀1