Выражения-генераторы в Python
Выражения-генераторы — это мощный инструмент, который позволяет создавать итераторы без загрузки всей коллекции в память. В отличие от генераторов списков, множеств или словарей, выражения-генераторы возвращают элементы по одному, что особенно полезно при работе с большими объемами данных.
Преимущества выражений-генераторов
-Экономия памяти: элементы генерируются "на лету", что позволяет работать с большими данными.
-Ленивые вычисления: элементы вычисляются только при запросе.
-Универсальность: могут использоваться в любом контексте, где требуется итератор.
Когда использовать?
-Когда объем данных слишком велик для загрузки в память.
-Когда нужно обрабатывать данные по частям.
-Когда требуется ленивое вычисление элементов.
Выражения-генераторы — это мощный инструмент, который позволяет создавать итераторы без загрузки всей коллекции в память. В отличие от генераторов списков, множеств или словарей, выражения-генераторы возвращают элементы по одному, что особенно полезно при работе с большими объемами данных.
Преимущества выражений-генераторов
-Экономия памяти: элементы генерируются "на лету", что позволяет работать с большими данными.
-Ленивые вычисления: элементы вычисляются только при запросе.
-Универсальность: могут использоваться в любом контексте, где требуется итератор.
Когда использовать?
-Когда объем данных слишком велик для загрузки в память.
-Когда нужно обрабатывать данные по частям.
-Когда требуется ленивое вычисление элементов.
❤🔥6
Нравятся ли тебе посты, которые я публикую?
Anonymous Poll
91%
Да, все ок
9%
Да, но сложно
4%
Да, слишком просто все
0%
Нет
1%
Затрудняюсь ответить
Как резать списки без лишних копий? 🐍
Слайсинг — это не просто удобный способ извлечь часть списка, указав начальный и конечный индексы. Это еще и отличный способ сэкономить память! Вместо создания новой копии списка, мы работаем напрямую с исходным объектом. Это особенно важно, когда вы работаете с большими объемами данных — меньше копий, больше производительности.
Вместо того, чтобы создавать копию my_list, в примере мы напрямую обращаемся к этому объекту. Это рациональное расходование памяти, и на больших объемах данных вы точно оцените эту фичу.
Слайсинг — это не просто удобный способ извлечь часть списка, указав начальный и конечный индексы. Это еще и отличный способ сэкономить память! Вместо создания новой копии списка, мы работаем напрямую с исходным объектом. Это особенно важно, когда вы работаете с большими объемами данных — меньше копий, больше производительности.
Вместо того, чтобы создавать копию my_list, в примере мы напрямую обращаемся к этому объекту. Это рациональное расходование памяти, и на больших объемах данных вы точно оцените эту фичу.
👍6
"Моржовый" оператор
Оператор := позволяет присваивать значения переменной прямо в выражении, после чего сразу же проверяется условие. Очень удобно, когда нужно уменьшить количество строк кода и сделать его более компактным.
P.S. Моржовый оператор (:=) появился в Python 3.8. Его так называют, потому что он похож на глаза и бивни моржа.
Оператор := позволяет присваивать значения переменной прямо в выражении, после чего сразу же проверяется условие. Очень удобно, когда нужно уменьшить количество строк кода и сделать его более компактным.
P.S. Моржовый оператор (:=) появился в Python 3.8. Его так называют, потому что он похож на глаза и бивни моржа.
👍10🔥2
Правдивость объектов в Python
В Python объект считается ложным (False) только в случае, если он пуст. То есть, чтобы проверить, например, строку, кортеж или словарь на "пустоту", достаточно просто использовать его в логическом выражении, не проверяя явно длину. Ну и, конечно, 0 будет False, а все остальные числа — True.
Совет: используйте это поведение для более компактных проверок.
В Python объект считается ложным (False) только в случае, если он пуст. То есть, чтобы проверить, например, строку, кортеж или словарь на "пустоту", достаточно просто использовать его в логическом выражении, не проверяя явно длину. Ну и, конечно, 0 будет False, а все остальные числа — True.
Совет: используйте это поведение для более компактных проверок.
👍7
Проверка на вхождение подстроки в Питон
В Python для проверки, содержится ли элемент в списке, кортеже или словаре, можно использовать конструкцию
Маленький лайфхак: это особенно полезно, когда нужно быстро найти вхождение в длинных строках или списках.
В 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
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
The Fuck — это удобное приложение для автоматической коррекции ошибок в командах консоли. Оно помогает быстро исправлять опечатки и неверные команды, экономя время при работе в терминале.
Приложение поддерживает множество встроенных правил для популярных команд и может работать в "экспериментальном" режиме, где ошибки исправляются мгновенно. Также можно настроить поведение через конфигурационный файл и создавать собственные правила для исправления команд. Это настоящий спасатель для разработчиков, которые часто сталкиваются с ошибками в консоли.
https://github.com/nvbn/thefuck
🔥7
Аргументы командной строки в Python
Когда запускаешь программу через терминал, можно передавать аргументы через пробел. В Python эти аргументы хранятся в списке
Пример: это удобно для того, чтобы на лету передавать разные параметры в программу.
Когда запускаешь программу через терминал, можно передавать аргументы через пробел. В Python эти аргументы хранятся в списке
argv из модуля sys. Первый элемент — это всегда имя самого скрипта, а все остальные элементы — это уже переданные аргументы.Пример: это удобно для того, чтобы на лету передавать разные параметры в программу.
👍10
Сортировка объектов по нескольким ключам
Чтобы отсортировать объекты по нескольким ключам, можно использовать модуль
Такой подход позволяет легко настроить сортировку по нескольким параметрам в одном шаге.
Чтобы отсортировать объекты по нескольким ключам, можно использовать модуль
operator. Например, сначала сортируем по возрасту, а потом по имени. Для этого с помощью operator.itemgetter() извлекаем нужные поля (возраст и имя) из каждого словаря в списке.Такой подход позволяет легко настроить сортировку по нескольким параметрам в одном шаге.
👍4🤔4
Самый частый элемент в списке
Чтобы найти самый частый элемент в списке, используем функцию
Легкий способ найти "лидера" среди элементов списка.
Чтобы найти самый частый элемент в списке, используем функцию
max(). В качестве первого аргумента передаем множество уникальных элементов из списка (так как в множестве не может быть повторений). Затем с помощью функции count() для каждого элемента считаем, сколько раз он встречается в списке. В результате max() выберет тот элемент, который встречается чаще всего.Легкий способ найти "лидера" среди элементов списка.
👍3🔥3❤🔥1
Вывод строк текста не больше установленной ширины
Для того, чтобы ограничить вывод текста определенной шириной, можно использовать встроенную библиотеку
Это удобный способ форматировать текст для консоли или вывода, чтобы не выходил за пределы экрана.
Для того, чтобы ограничить вывод текста определенной шириной, можно использовать встроенную библиотеку
textwrap и её функцию fill(). В качестве первого аргумента передаем текст, а вторым указываем максимальную ширину строки в символах.Это удобный способ форматировать текст для консоли или вывода, чтобы не выходил за пределы экрана.
👍9🥰1
Switch-конструкции в Python
В Python нет прямой конструкции
В этом примере вместо
Это элегантный способ заменить
В Python нет прямой конструкции
switch, как в других языках. Но есть интересное решение — использовать словарь, где ключами будут значения, а значениями — функции. Таким образом, можно имитировать поведение switch.В этом примере вместо
lambda можно подставить любые другие функции, которые будут выполняться в зависимости от ключа.Это элегантный способ заменить
switch и сделать код компактным и понятным!🔥5👏5❤🔥1😐1
Дизассемблирование
В Python есть встроенный модуль
С помощью
В Python есть встроенный модуль
dis, который позволяет декомпилировать программу в байт-код. Это полезно, если хотите понять, как ваш код будет выполняться на уровне машинных инструкций Python.С помощью
dis можно увидеть, как Python интерпретирует ваши функции и операции, и это может помочь в оптимизации кода.🔥3
Давайте разберёмся с расширенной итерационной распаковкой. Звучит сложно, но на деле просто.
Когда в Python вы используете распаковку, то переменные без
Простой пример:
Здесь
Очень удобный способ работы с коллекциями, когда нужно «выдернуть» несколько элементов из середины или конца.
Когда в 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.Программирование на Python
Модуль inspect в Python: примеры интроспекции и проверки объектов
Описание модуля inspect в Python. Примеры использования функции для интроспекции объектов в программе и просмотра исходного кода модулей и классов, которые используются во всей программе.
👍6❤1
Подчеркивание в числовых литералах — это полезная фишка Python 3, которая упрощает восприятие чисел. Оно помогает разделять большие числа на группы, например, для удобства чтения тысяч, миллионов или даже чисел в других системах счисления.
Пример:
Это ничем не влияет на значение числа, но значительно улучшает его читаемость. Теперь большие числа выглядят гораздо проще для восприятия
Пример:
num = 1_000_000 # миллион
hex_num = 0xFF_FF_FF # шестнадцатеричное число
bin_num = 0b1010_1011 # двоичное число
Это ничем не влияет на значение числа, но значительно улучшает его читаемость. Теперь большие числа выглядят гораздо проще для восприятия
🔥8👍4👀1
Правила написания регулярных выражений (regex) в коде:
1. Использование re.compile. Для сложных и длинных регулярных выражений всегда лучше использовать
2. Избегание повторных вызовов re.compile. Если вы часто используете одно и то же регулярное выражение, лучше не вызывать
3. Использование re.VERBOSE для подробных выражений. При написании сложных регулярных выражений, используйте флаг
Такой подход помогает сделать регулярные выражения не только функциональными, но и более понятными для других разработчиков.
1. Использование re.compile. Для сложных и длинных регулярных выражений всегда лучше использовать
re.compile (или его аналоги в других языках). Это повышает читаемость и производительность кода.2. Избегание повторных вызовов re.compile. Если вы часто используете одно и то же регулярное выражение, лучше не вызывать
re.compile каждый раз. Вместо этого можно сохранить скомпилированное регулярное выражение и использовать его повторно.3. Использование re.VERBOSE для подробных выражений. При написании сложных регулярных выражений, используйте флаг
re.VERBOSE. Это позволит разделить выражение на несколько строк и добавлять комментарии, что значительно улучшает читаемость и поддержку кода. Такой подход помогает сделать регулярные выражения не только функциональными, но и более понятными для других разработчиков.
🤔1
По выходным, как всегда, готовые полезные приложухи)
RealtimeSTT — это библиотека для преобразования речи в текст в реальном времени. Она отличается низкой задержкой и удобна для интеграции в различные приложения, например, в голосовые помощники.
Библиотека предоставляет базовые функции записи и одновременной обработки транскрипций, а также поддерживает настройку параметров и использование колбэков для управления активацией. Это отличный инструмент для создания высококачественных голосовых приложений с минимальной задержкой.
https://github.com/KoljaB/RealtimeSTT
RealtimeSTT — это библиотека для преобразования речи в текст в реальном времени. Она отличается низкой задержкой и удобна для интеграции в различные приложения, например, в голосовые помощники.
Библиотека предоставляет базовые функции записи и одновременной обработки транскрипций, а также поддерживает настройку параметров и использование колбэков для управления активацией. Это отличный инструмент для создания высококачественных голосовых приложений с минимальной задержкой.
https://github.com/KoljaB/RealtimeSTT
GitHub
GitHub - KoljaB/RealtimeSTT: A robust, efficient, low-latency speech-to-text library with advanced voice activity detection, wake…
A robust, efficient, low-latency speech-to-text library with advanced voice activity detection, wake word activation and instant transcription. - KoljaB/RealtimeSTT
👍2