Just Python
10.3K subscribers
4.34K photos
11 videos
4.32K links
🐍Простое изучение Python.

Ссылка: @Portal_v_IT

Сотрудничество: @oleginc, @tatiana_inc

Канал на бирже: telega.in/c/justpython_it

РКН: clck.ru/3MnbSc
Download Telegram
Перебор части итерируемого.

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

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

Выходом может быть использование функции islice() из пакета itertools.

#theory // Just Python
Вложенный генератор внутри генератора — двумерная из двух одномерных

Общий синтаксис: [[expression for y in iter2] for x in iter1]

Применение: генерируем двумерную структуру, используя данные из двух одномерных итераторов.

#theory // Just Python
Вложенные циклы for где циклы идут по независимым итераторам

Общий синтаксис: [expression for x in iter1 for y in iter2]
Применение: генерируем одномерную структуру, используя данные из двух итераторов.

#theory // Just Python
Генератор итерирующийся по генератору

Так как любой генератор может использоваться как итератор в цикле for, это так же можно использовать и для создания генератора по генератору.
При этом синтаксически это может записываться в два выражения или объединяться во вложенный генератор.

#theory // Just Python
Вложенный генератор внутри генератора — двумерная из двумерной

Общий синтаксис: [[expression for y in x] for x in iterator]

Применение: Обходим двумерную структуру данных, сохраняя результат в другую двумерную структуру.

#theory // Just Python
Быстрое получение диапазона дат

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

Этот лайфхак помогает быстро создать список всех дат в заданном диапазоне. Он будет особенно полезен для аналитиков данных, специалистов по бизнес-аналитике и разработчиков, работающих с временными рядами или данными, завязанными на даты.

#theory // Just Python
Быстрая замена значений в столбце DataFrame на основе условий

Когда у вас есть DataFrame и вам нужно заменить значения в столбце на основе определенных условий, вместо использования циклов, можно воспользоваться методом np.where из библиотеки NumPy.

Этот лайфхак помогает заменить значения в столбце DataFrame на основе заданных условий, избегая использования циклов и делая код более читаемым и эффективным. Он будет особенно полезен для аналитиков данных и всех, кто работает с большими наборами данных, где требуется производить массовые изменения данных на основе условий.

#theory // Just Python
Оператор морж (:=) или способ записывать данные в переменную о котором вы не знали

Начиная с Python 3.8, появился новый синтаксис под названием «оператор морж» или walrus operator, который может присваивать значения переменным как часть более крупного выражения.

Оператор := получил свое милое название из-за глаз и бивней моржа.

#theory // Just Python
Быстрая сортировка словаря по значениям

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

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

#theory // Just Python
Быстрое логирование с декоратором

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

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

#theory // Just Python
Избегайте вложенных циклов с помощью product

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

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

#theory // Just Python
Используем * для мерджа списка, кортежа и множества в одну строчку

Для того, чтобы это сделать самый элегантный способ - использование *

Звездочки можно использовать в качестве префиксов для распаковки их элементов. Но помимо распаковки, звездочки также можно использовать для деструктуризации присваиваний в Python.

#theory // Just Python
Самый легкий способ мерджить словари

Слияние словарей - частое действие в программировании на Python. Существует множество способов сделать это. Но все они были уродливы до версии Python 3.9.

Начиная с Python 3.9, мы наконец-то получили самый элегантный способ объединения словарей - использование операторов объединения.

#theory // Just Python
Используем встроенные функции в Python для написания стандартной логики (ч.1)

В Python есть несколько встроенных функций, которые помогают при написании некоторых стандартных логических операций.

Например, функция map() - известная и часто используемая функция. Она получает два параметра, один из которых - функция, а другой - итератор. При выполнении функции map функция применяется к каждому элементу в итераторе.

#theory // Just Python
Используем встроенные функции в Python для написания стандартной логики
(ч.2)

Как показано в примере выше, с помощью функции map() мы можем избежать написания цикла for для выделения заглавными буквами каждого слова в списке имен.

Другая известная функция - reduce(). Как следует из ее названия, она применяет функцию к итератору и выполняет для нее операцию reduce.

#theory // Just Python
Подсчет количества элементов

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

#theory // Just Python
Наиболее частый элемент в списке

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

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

#theory // Just Python
Списковое включение (быстрый способ)

Списковое включение — самый эффективный способ итерации любого списка. Это итерирование однострочного списка с включением в него цикла. Посмотрите приведенный ниже пример кода, чтобы понять, как это работает.

#theory // Just Python
Повторение элемента в списке

Чтобы увеличить количество строк, можно использовать звездочку *. Но этот лайфхак применим и к спискам.

#theory // Just Python
Выводим повторяющиеся элементы и количество их повторений

Функция groupby() позволяет получить повторяющиеся элементы в итераторе и сгруппировать их.

#theory // Just Python