Python School
82.7K subscribers
2.39K photos
7 videos
564 links
Уроки по Python, которые упростят вам жизнь. Без идиотских туториалов.

Наши мемы для программистов: @conhum

Сотрудничество - @alivian

Канал сотрудничает с рекламным сервисом @Tgpodbor_official

РКН: clck.ru/3G6pBb
加入频道
Использование однострочных условий (тернарных операторов)

Иногда нужно сделать выбор между двумя значениями на основе условия. Вместо написания полного блока if-else, можно использовать тернарный оператор, который позволяет записать условие и выбор значений в одну строку.

Тернарный оператор помогает упростить код, уменьшая количество строк и делая его более читаемым, особенно в ситуациях, где нужно быстро принять решение на основе простого условия.
Использование множества (set) для удаления дубликатов из списка

Когда вы работаете со списками и хотите быстро удалить из них дубликаты, использование множества (set) — это самый простой и быстрый способ.

Этот способ особенно удобен, когда важно быстро избавиться от дубликатов, а порядок элементов не имеет значения. Он помогает сделать код компактным и эффективным.
Использование collections.defaultdict для работы со словарями с значениями по умолчанию

Когда вы работаете со словарями и часто сталкиваетесь с ситуацией, когда нужно инициализировать значение, если ключа ещё нет в словаре, defaultdict из модуля collections значительно упростит вашу работу.

Использование defaultdict делает код чище и защищает от ошибок, связанных с обращением к несуществующим ключам, позволяя сосредоточиться на логике задачи.
Использование zip() для параллельной итерации по нескольким последовательностям

Когда вам нужно одновременно итерировать по нескольким спискам или последовательностям и работать с их элементами параллельно, zip() — это отличный инструмент, который позволяет объединить их в одну последовательность кортежей.

Использование zip() делает код более элегантным и сокращает количество строк, позволяя избежать явной работы с индексами и упрощая параллельную обработку данных.
Использование itertools для создания комбинаций и перестановок

Когда вам нужно сгенерировать все возможные комбинации, перестановки или произведения элементов из одного или нескольких списков, модуль itertools предоставляет для этого удобные функции.

Использование itertools позволяет быстро и эффективно генерировать комбинации и перестановки, что упрощает решение многих задач, связанных с перебором и анализом вариантов.
Использование списка списков (List Comprehensions) для создания двумерных массивов

Когда вам нужно создать двумерный массив (список списков) с инициализированными значениями, можно использовать мощные и лаконичные возможности списка списков в Python.

Использование списка списков позволяет легко и быстро создавать двумерные массивы с любой логикой инициализации, делая код компактным и понятным.
Наследование

Нередко в процессе написания кода выясняется, что некоторые объекты аналогичны другим за исключением нескольких различий. Определение сходств и различий между такими объектами называется "наследованием".

Мы все прекрасно знаем, что котики, к примеру, любят всё ронять, а собакены — рыть землю. Создадим два соответствующих класса-наследника.

Теперь объекты этих двух классов могут не только издавать животные звуки, но и выполнять собственные уникальные действия.
Использование try/except для безопасного доступа к словарям

Когда вы работаете со словарями и хотите получить значение по ключу, но не уверены, существует ли этот ключ, вместо того чтобы писать сложные проверки, можно использовать конструкцию try/except.

Использование try/except делает код более надёжным и защищает от сбоев, вызванных отсутствием ключей в словарях, что упрощает работу с динамическими и неопределёнными данными.
Использование функции enumerate() для нумерации элементов в цикле

Когда вам нужно итерировать по списку и одновременно отслеживать индекс каждого элемента, использование функции enumerate() упрощает эту задачу, избавляя от необходимости вручную управлять счётчиком.

Использование enumerate() улучшает читаемость кода и упрощает работу с индексами при итерации по спискам, что особенно полезно при обработке больших данных или сложных списков.
Использование "словаря через .get()" для безопасного доступа к значениям

Когда вы работаете со словарями и вам нужно получить значение по ключу, но не хотите сталкиваться с ошибкой, если ключ отсутствует, метод .get() — отличное решение.

Использование метода .get() позволяет сделать код более устойчивым к ошибкам и упрощает обработку данных, где наличие ключей не всегда гарантировано.
Использование модуля os.path и pathlib для удобной работы с путями

Когда вы работаете с файлами и директориями, важно уметь легко и безопасно манипулировать путями к файлам. Модули os.path и pathlib в Python предоставляют удобные методы для работы с путями, объединения их, получения имени файла и расширения, а также проверки существования файла или директории.

Использование os.path и pathlib помогает сделать код более безопасным и понятным, упрощая работу с путями и снижая вероятность ошибок, связанных с неправильным использованием путей к файлам.
Использование f-строк для форматирования строк

Когда вам нужно вставить переменные или выражения в строки, f-строки (форматированные строки) позволяют сделать это быстро, удобно и читаемо.

Использование f-строк делает код более понятным и снижает вероятность ошибок, связанных с форматированием строк, обеспечивая удобство и лаконичность.
Использование функции zip() для одновременной итерации по нескольким спискам

Когда вам нужно итерировать сразу по нескольким спискам параллельно, функция zip() позволяет делать это легко и эффективно.

Использование zip() делает код более лаконичным и понятным, а также упрощает работу с множеством списков, особенно при параллельной обработке их элементов.
Naive

В методе Naive цикл for используется для обхода второго списка. После этого элементы из второго списка добавляются к первому списку. Первый список является объединением первого и второго списков.
Использование defaultdict для упрощённой работы со словарями

Когда вам нужно создавать и заполнять словарь с значениями по умолчанию, класс defaultdict из модуля collections помогает сделать это без лишних проверок.
Использование Counter для быстрого подсчета элементов в списке

Когда вам нужно подсчитать количество вхождений элементов в списке, класс Counter из модуля collections позволяет сделать это очень быстро и лаконично.

Использование Counter позволяет легко и быстро подсчитывать вхождения элементов, делая ваш код более эффективным и понятным.
Использование any() и all() для проверки условий в списках

Когда вам нужно проверить, выполняются ли все или хотя бы одно условие для элементов в списке, функции any() и all() помогают сделать это быстро и лаконично.

Использование any() и all() делает код более читаемым и позволяет легко проверять условия для элементов коллекций без написания сложных циклов.
Использование try/except для безопасного доступа к словарям

Когда вы работаете со словарями и хотите получить значение по ключу, но не уверены, существует ли этот ключ, вместо того чтобы писать сложные проверки, можно использовать конструкцию try/except.

Использование try/except делает код более надёжным и защищает от сбоев, вызванных отсутствием ключей в словарях, что упрощает работу с динамическими и неопределёнными данными.
Быстрое чтение файла и удаление пробелов с помощью strip()

Когда вам нужно прочитать файл и удалить лишние пробелы или символы новой строки из каждой строки, использование strip() внутри генератора списков — эффективный и удобный способ.

Этот лайфхак поможет вам легко и быстро очищать данные при чтении файлов, что особенно полезно в ситуациях, где требуется минимальная обработка текстовых данных.
Использование try-except-else для безопасного выполнения кода с обработкой ошибок

Когда вам нужно выполнить код, который может вызвать исключение, и при этом вы хотите добавить логику, которая будет выполняться только в случае отсутствия ошибок, блок try-except-else помогает организовать это грамотно.

Использование try-except-else позволяет делать код более устойчивым к ошибкам, обеспечивая выполнение дополнительной логики только при успешном выполнении основного кода.