math.comb
Функция math.comb используется для вычисления числа сочетаний из n элементов по k элементов. Число сочетаний определяет, сколькими способами можно выбрать k элементов из множества из n элементов без учета порядка. Например, если у тебя есть 5 разных книг и ты хочешь выбрать 2 из них для чтения, то math.comb(5, 2) покажет, сколько различных пар книг можно выбрать.
🔗 Python tricks
Функция math.comb используется для вычисления числа сочетаний из n элементов по k элементов. Число сочетаний определяет, сколькими способами можно выбрать k элементов из множества из n элементов без учета порядка. Например, если у тебя есть 5 разных книг и ты хочешь выбрать 2 из них для чтения, то math.comb(5, 2) покажет, сколько различных пар книг можно выбрать.
🔗 Python tricks
Использование Counter для быстрого подсчета элементов в списке
Когда вам нужно подсчитать количество вхождений элементов в списке, класс Counter из модуля collections позволяет сделать это очень быстро и лаконично.
Использование Counter позволяет легко и быстро подсчитывать вхождения элементов, делая ваш код более эффективным и понятным.
🔗 Python tricks
Когда вам нужно подсчитать количество вхождений элементов в списке, класс Counter из модуля collections позволяет сделать это очень быстро и лаконично.
Использование Counter позволяет легко и быстро подсчитывать вхождения элементов, делая ваш код более эффективным и понятным.
🔗 Python tricks
Использование any() и all() для проверки условий в списках
Когда вам нужно проверить, выполняются ли все или хотя бы одно условие для элементов в списке, функции any() и all() помогают сделать это быстро и лаконично.
Использование any() и all() делает код более читаемым и позволяет легко проверять условия для элементов коллекций без написания сложных циклов.
🔗 Python tricks
Когда вам нужно проверить, выполняются ли все или хотя бы одно условие для элементов в списке, функции any() и all() помогают сделать это быстро и лаконично.
Использование any() и all() делает код более читаемым и позволяет легко проверять условия для элементов коллекций без написания сложных циклов.
🔗 Python tricks
Использование try/except для безопасного доступа к словарям
Когда вы работаете со словарями и хотите получить значение по ключу, но не уверены, существует ли этот ключ, вместо того чтобы писать сложные проверки, можно использовать конструкцию try/except.
Использование try/except делает код более надёжным и защищает от сбоев, вызванных отсутствием ключей в словарях, что упрощает работу с динамическими и неопределёнными данными.
🔗 Python tricks
Когда вы работаете со словарями и хотите получить значение по ключу, но не уверены, существует ли этот ключ, вместо того чтобы писать сложные проверки, можно использовать конструкцию try/except.
Использование try/except делает код более надёжным и защищает от сбоев, вызванных отсутствием ключей в словарях, что упрощает работу с динамическими и неопределёнными данными.
🔗 Python tricks
Срезы итераторов
Если вы попытаетесь получить срез (slice) итератора, то столкнётесь с ошибкой TypeError, сообщающей о том, что на объект-генератор нельзя оформить подписку. Однако эта проблема поддаётся решению
🔗 Python tricks
Если вы попытаетесь получить срез (slice) итератора, то столкнётесь с ошибкой TypeError, сообщающей о том, что на объект-генератор нельзя оформить подписку. Однако эта проблема поддаётся решению
🔗 Python tricks
Получение срезов итераторов
Воспользовавшись методом itertools.islice можно создать объект islice, который представляет собой итератор, выдающий нужные элементы. Однако здесь важно отметить то, что эта конструкция использует все элементы генератора вплоть до начала среза и все элементы в объекте islice.
🔗 Python tricks
Воспользовавшись методом itertools.islice можно создать объект islice, который представляет собой итератор, выдающий нужные элементы. Однако здесь важно отметить то, что эта конструкция использует все элементы генератора вплоть до начала среза и все элементы в объекте islice.
🔗 Python tricks
Итерируемые объекты
Иногда нужно работать с файлом, который, как заранее известно, начинается с некоторого числа ненужных строк — вроде строк с комментариями. Для того чтобы пропустить эти строки, можно, снова, прибегнуть к возможностям itertools
🔗 Python tricks
Иногда нужно работать с файлом, который, как заранее известно, начинается с некоторого числа ненужных строк — вроде строк с комментариями. Для того чтобы пропустить эти строки, можно, снова, прибегнуть к возможностям itertools
🔗 Python tricks
Ограничение использования процессора и памяти (ч.1)
Если вместо того, чтобы оптимизировать программу, или улучшить то, как она пользуется процессором, вам нужно просто задать жёсткое ограничение на доступные ей ресурсы, можно воспользоваться соответствующей библиотекой
Тут показано ограничение процессорного времени и объёма памяти. Для того чтобы ограничить использование программой процессора, мы сначала получаем значения нежёсткого и жёсткого (hard) лимитов для конкретного ресурса (RLIMIT_CPU).
🔗 Python tricks
Если вместо того, чтобы оптимизировать программу, или улучшить то, как она пользуется процессором, вам нужно просто задать жёсткое ограничение на доступные ей ресурсы, можно воспользоваться соответствующей библиотекой
Тут показано ограничение процессорного времени и объёма памяти. Для того чтобы ограничить использование программой процессора, мы сначала получаем значения нежёсткого и жёсткого (hard) лимитов для конкретного ресурса (RLIMIT_CPU).
🔗 Python tricks
Ограничение использования процессора и памяти (ч.2)
Затем мы устанавливаем лимит, используя некое число секунд, задаваемое аргументом seconds, и ранее полученное значение жёсткого лимита. После этого мы регистрируем обработчик signal, который, при превышении выделенного программе процессорного времени, инициирует процедуру выхода. В случае с памятью, мы, опять же, получаем значения для нежёсткого и жёсткого лимитов, после чего устанавливаем ограничение с помощью метода setrlimit, которому передаём размер ограничения (size) и ранее полученное значение жёсткого лимита
🔗 Python tricks
Затем мы устанавливаем лимит, используя некое число секунд, задаваемое аргументом seconds, и ранее полученное значение жёсткого лимита. После этого мы регистрируем обработчик signal, который, при превышении выделенного программе процессорного времени, инициирует процедуру выхода. В случае с памятью, мы, опять же, получаем значения для нежёсткого и жёсткого лимитов, после чего устанавливаем ограничение с помощью метода setrlimit, которому передаём размер ограничения (size) и ранее полученное значение жёсткого лимита
🔗 Python tricks
F-строки
Сложно делать что-либо без строк в Python и чтобы сохранить адекватность, вам нужно иметь структурированный способ работы со строками. Большая часть людей, работающих с Python, предпочитают метод format python.
🔗 Python tricks
Сложно делать что-либо без строк в Python и чтобы сохранить адекватность, вам нужно иметь структурированный способ работы со строками. Большая часть людей, работающих с Python, предпочитают метод format python.
🔗 Python tricks
Быстрое чтение файла и удаление пробелов с помощью strip()
Когда вам нужно прочитать файл и удалить лишние пробелы или символы новой строки из каждой строки, использование strip() внутри генератора списков — эффективный и удобный способ.
Этот лайфхак поможет вам легко и быстро очищать данные при чтении файлов, что особенно полезно в ситуациях, где требуется минимальная обработка текстовых данных.
🔗 Python tricks
Когда вам нужно прочитать файл и удалить лишние пробелы или символы новой строки из каждой строки, использование strip() внутри генератора списков — эффективный и удобный способ.
Этот лайфхак поможет вам легко и быстро очищать данные при чтении файлов, что особенно полезно в ситуациях, где требуется минимальная обработка текстовых данных.
🔗 Python tricks
Использование try-except-else для безопасного выполнения кода с обработкой ошибок
Когда вам нужно выполнить код, который может вызвать исключение, и при этом вы хотите добавить логику, которая будет выполняться только в случае отсутствия ошибок, блок try-except-else помогает организовать это грамотно.
Использование try-except-else позволяет делать код более устойчивым к ошибкам, обеспечивая выполнение дополнительной логики только при успешном выполнении основного кода.
🔗 Python tricks
Когда вам нужно выполнить код, который может вызвать исключение, и при этом вы хотите добавить логику, которая будет выполняться только в случае отсутствия ошибок, блок try-except-else помогает организовать это грамотно.
Использование try-except-else позволяет делать код более устойчивым к ошибкам, обеспечивая выполнение дополнительной логики только при успешном выполнении основного кода.
🔗 Python tricks
NumPy: array_split
Ты можешь использовать array split() для разделения массивов, передав ему массив, который хочешь разделить, и количество разделений. Если в массиве меньше элементов, чем требуется, он соответствующим образом корректируется с конца.
🔗 Python tricks
Ты можешь использовать array split() для разделения массивов, передав ему массив, который хочешь разделить, и количество разделений. Если в массиве меньше элементов, чем требуется, он соответствующим образом корректируется с конца.
🔗 Python tricks
math.isnan
Функция math.isnan() используется для проверки, является ли значение NaN (Not a Number, не число). Эта функция возвращает True, если переданное значение является NaN, и False в противном случае.
🔗 Python tricks
Функция math.isnan() используется для проверки, является ли значение NaN (Not a Number, не число). Эта функция возвращает True, если переданное значение является NaN, и False в противном случае.
🔗 Python tricks
math.fmod
math.fmod — это функция в модуле math, которая вычисляет остаток от деления двух чисел, используя их знаки. В отличие от оператора %, который всегда возвращает результат с тем же знаком, что и делитель, math.fmod возвращает результат с тем же знаком, что и делимое.
🔗 Python tricks
math.fmod — это функция в модуле math, которая вычисляет остаток от деления двух чисел, используя их знаки. В отличие от оператора %, который всегда возвращает результат с тем же знаком, что и делитель, math.fmod возвращает результат с тем же знаком, что и делимое.
🔗 Python tricks
Использование enumerate() для итерации по списку с индексами
Когда вам нужно одновременно получать и элементы списка, и их индексы в цикле, функция enumerate() делает это простым и элегантным способом.
Использование enumerate() делает код более компактным и удобным для чтения, особенно в тех случаях, когда вам нужно одновременно обрабатывать элементы списка и их индексы.
🔗 Python tricks
Когда вам нужно одновременно получать и элементы списка, и их индексы в цикле, функция enumerate() делает это простым и элегантным способом.
Использование enumerate() делает код более компактным и удобным для чтения, особенно в тех случаях, когда вам нужно одновременно обрабатывать элементы списка и их индексы.
🔗 Python tricks
Использование множественного присваивания для обмена значениями переменных
Когда вам нужно поменять местами значения двух переменных, Python позволяет сделать это в одну строчку с помощью множественного присваивания.
Использование множественного присваивания делает код более лаконичным и легким для понимания, упрощая задачи, которые в других языках требуют более сложных решений.
🔗 Python tricks
Когда вам нужно поменять местами значения двух переменных, Python позволяет сделать это в одну строчку с помощью множественного присваивания.
Использование множественного присваивания делает код более лаконичным и легким для понимания, упрощая задачи, которые в других языках требуют более сложных решений.
🔗 Python tricks
Использование срезов списка для инвертирования его порядка
Когда вам нужно развернуть список в обратном порядке, можно использовать срезы (slicing) для быстрого и эффективного решения.
Использование срезов для инвертирования списка позволяет писать код более лаконично и эффективно, избегая необходимости в создании новых списков вручную или использования дополнительных функций.
🔗 Python tricks
Когда вам нужно развернуть список в обратном порядке, можно использовать срезы (slicing) для быстрого и эффективного решения.
Использование срезов для инвертирования списка позволяет писать код более лаконично и эффективно, избегая необходимости в создании новых списков вручную или использования дополнительных функций.
🔗 Python tricks
Использование zip() для объединения нескольких списков
Когда вам нужно параллельно обрабатывать элементы из нескольких списков, функция zip() позволяет удобно объединить их в пары (или кортежи), что упрощает работу с ними.
🔗 Python tricks
Когда вам нужно параллельно обрабатывать элементы из нескольких списков, функция zip() позволяет удобно объединить их в пары (или кортежи), что упрощает работу с ними.
🔗 Python tricks
Использование defaultdict для упрощения работы со словарями
Когда вы работаете со словарями, в которых нужно инициализировать значения по умолчанию для новых ключей, defaultdict из модуля collections значительно упрощает этот процесс.
Использование defaultdict делает код более чистым, сокращая количество проверок на наличие ключей и обеспечивая автоматическую инициализацию значений, что особенно полезно в сложных структурах данных.
🔗 Python tricks
Когда вы работаете со словарями, в которых нужно инициализировать значения по умолчанию для новых ключей, defaultdict из модуля collections значительно упрощает этот процесс.
Использование defaultdict делает код более чистым, сокращая количество проверок на наличие ключей и обеспечивая автоматическую инициализацию значений, что особенно полезно в сложных структурах данных.
🔗 Python tricks