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

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

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

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

РКН: clck.ru/3G6pBb
加入频道
Использование модуля os.path и pathlib для удобной работы с путями

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

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

Если вам нужно получить основные статистические показатели (среднее, медиану, стандартное отклонение и т.д.) для набора данных, Python предлагает удобные инструменты для этого. Вы можете использовать модуль statistics для работы с небольшими наборами данных или pandas для анализа больших данных в DataFrame.

Использование statistics и pandas помогает упростить анализ данных и быстро получить необходимую информацию о числовом наборе, будь то список чисел или целый столбец данных в таблице.
Использование функции functools.lru_cache для кэширования результатов функции

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

Использование lru_cache помогает существенно сократить время выполнения программ, особенно в тех случаях, когда функция выполняет ресурсоемкие операции, и ее результаты можно использовать повторно.
Использование оператора else с циклом for или while

В Python циклы for и while могут содержать блок else, который выполняется, если цикл завершился без прерывания (без использования break). Это мощная, но часто забываемая возможность, которая позволяет элегантно обрабатывать случаи, когда цикл проходит полностью.

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

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

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

Иногда нужно сделать выбор между двумя значениями на основе условия. Вместо написания полного блока 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 помогает сделать это без лишних проверок.