Data classes
Начиная с версии 3.7, Python поставляется с классами данных. У них есть несколько преимуществ по сравнению с обычными классами или другими альтернативами:
• возврат нескольких значений или словарей;
• класс данных требует минимального количества кода;
• возможность сравнения классов данных;
• возможность распечатать класс данных для отладки при помощи repr;
• снижение вероятности ошибок в связи с требованием класса данных type hints
Подписывайтесь на канал 👉@pythonofff
Начиная с версии 3.7, Python поставляется с классами данных. У них есть несколько преимуществ по сравнению с обычными классами или другими альтернативами:
• возврат нескольких значений или словарей;
• класс данных требует минимального количества кода;
• возможность сравнения классов данных;
• возможность распечатать класс данных для отладки при помощи repr;
• снижение вероятности ошибок в связи с требованием класса данных type hints
Подписывайтесь на канал 👉@pythonofff
👍5
Проверка на вхождение подстроки
Должно быть, вы знаете, что можно проверить, содержится ли нужный элемент в кортеже, списке, словаре, с помощью конструкции 'item in list' или 'item not in list'. Я не мог представить, что это сработает для строк.
Подписывайтесь на канал 👉@pythonofff
Должно быть, вы знаете, что можно проверить, содержится ли нужный элемент в кортеже, списке, словаре, с помощью конструкции 'item in list' или 'item not in list'. Я не мог представить, что это сработает для строк.
Подписывайтесь на канал 👉@pythonofff
👍3
Списковые включения
Возможно где-то до этого ты уже мог слышать понятие «list comprehensions». Это такой способ уместить цикл for, блок if и присваивание в одну строку.
Начнем с простейшего примера. Допустим, нам снова надо возвести в квадрат все элементы списка.
Да, определенно этот код короче предыдущего, но всё еще некрасив. С первого взгляда сложно сказать, что делает функция map (она принимает в качестве аргументов функцию и список и применяет функцию к каждому элементу списка). К тому же мы вынуждены определять функцию, это выглядит довольно беспорядочно.
Подписывайтесь на канал 👉@pythonofff
Возможно где-то до этого ты уже мог слышать понятие «list comprehensions». Это такой способ уместить цикл for, блок if и присваивание в одну строку.
Начнем с простейшего примера. Допустим, нам снова надо возвести в квадрат все элементы списка.
Да, определенно этот код короче предыдущего, но всё еще некрасив. С первого взгляда сложно сказать, что делает функция map (она принимает в качестве аргументов функцию и список и применяет функцию к каждому элементу списка). К тому же мы вынуждены определять функцию, это выглядит довольно беспорядочно.
Подписывайтесь на канал 👉@pythonofff
👍2
Подсчет вхождений в список
Используйте Counter из библиотеки коллекций, чтобы получить словарь с подсчетом всех уникальных элементов в списке
Подписывайтесь на канал 👉@pythonofff
Используйте Counter из библиотеки коллекций, чтобы получить словарь с подсчетом всех уникальных элементов в списке
Подписывайтесь на канал 👉@pythonofff
👍4
Следим за временем, необходимым на выполнение вашего кода на Python
Допустим, вам необходимо узнать, сколько времени занимает выполнение той или иной функции. Используя модуль time, вы можете рассчитать это время.
Подписывайтесь на канал 👉@pythonofff
Допустим, вам необходимо узнать, сколько времени занимает выполнение той или иной функции. Используя модуль time, вы можете рассчитать это время.
Подписывайтесь на канал 👉@pythonofff
🔥3👍1
Валидные значения словаря
В словарь можно поместить что угодно – вы не ограничены числами или строками. Можете поместить списки внутрь словаря и получить доступ к вложенным значениям
Подписывайтесь на канал 👉@pythonofff
В словарь можно поместить что угодно – вы не ограничены числами или строками. Можете поместить списки внутрь словаря и получить доступ к вложенным значениям
Подписывайтесь на канал 👉@pythonofff
👍2
Самый частый элемент
Этот короткий скрипт вернёт элемент, чаще всего встречающийся в списке.
Используются продвинутые параметры встроенной функции max():
• первым аргументом она получает множество из элементов списка (помним, что в множестве все элементы уникальны);
• затем применяет к каждому из них функцию count, подсчитывающую, сколько раз элемент встречается в списке;
• после этого возвращает элемент множества, который имеет больше всего «попаданий».
В качестве аргумента можно использовать списки, кортежи и строки.
Подписывайтесь на канал 👉@pythonofff
Этот короткий скрипт вернёт элемент, чаще всего встречающийся в списке.
Используются продвинутые параметры встроенной функции max():
• первым аргументом она получает множество из элементов списка (помним, что в множестве все элементы уникальны);
• затем применяет к каждому из них функцию count, подсчитывающую, сколько раз элемент встречается в списке;
• после этого возвращает элемент множества, который имеет больше всего «попаданий».
В качестве аргумента можно использовать списки, кортежи и строки.
Подписывайтесь на канал 👉@pythonofff
🔥5👍4
Query JSON
JMESpath – это язык запросов для JSON, который позволяет получать необходимые данные из документа или словаря JSON. Библиотека доступна как для Python, так и для других ЯП, что расширяет ее возможности.
Подписывайтесь на канал 👉@pythonofff
JMESpath – это язык запросов для JSON, который позволяет получать необходимые данные из документа или словаря JSON. Библиотека доступна как для Python, так и для других ЯП, что расширяет ее возможности.
Подписывайтесь на канал 👉@pythonofff
👍3
Использование * и ** для распаковки аргументов функций
Некоторые функции требуют длинного списка аргументов. Этого следует избегать (например, с помощью классов данных), хотя это не всегда зависит от вас. Существует другой вариант – создать словарь с именованными аргументами и передать его функции. Так ваш код станет более читабельным.
Распаковать словарь можно, используя префикс **:
Подписывайтесь на канал 👉@pythonofff
Некоторые функции требуют длинного списка аргументов. Этого следует избегать (например, с помощью классов данных), хотя это не всегда зависит от вас. Существует другой вариант – создать словарь с именованными аргументами и передать его функции. Так ваш код станет более читабельным.
Распаковать словарь можно, используя префикс **:
Подписывайтесь на канал 👉@pythonofff
👍6
Распечатывание ежемесячного календаря
Этот лайфхак — всего лишь скрытая функция Python, которая позволяет распечатывать ежемесячный календарь в формате таблицы.
Подписывайтесь на канал 👉@pythonofff
Этот лайфхак — всего лишь скрытая функция Python, которая позволяет распечатывать ежемесячный календарь в формате таблицы.
Подписывайтесь на канал 👉@pythonofff
👍9
Get Method для словаря
Большинство разработчиков используют скобки, чтобы получить значение из словаря. Но сейчас рекомендуется использовать Get method.
При использовании метода скобок выдается ошибка, если ключ отсутствует. С помощью Get method вы получите “None” .
Подписывайтесь на канал 👉@pythonofff
Большинство разработчиков используют скобки, чтобы получить значение из словаря. Но сейчас рекомендуется использовать Get method.
При использовании метода скобок выдается ошибка, если ключ отсутствует. С помощью Get method вы получите “None” .
Подписывайтесь на канал 👉@pythonofff
👍5🤯1
Печать в одной строке
Мы знаем, что функция print выполняет вывод в каждой строке, и если использовать две функции print, они выполнят печать в две строки. Этот пример покажет, как выполнять вывод в той же строке без перехода на новую.
Подписывайтесь на канал 👉@pythonofff
Мы знаем, что функция print выполняет вывод в каждой строке, и если использовать две функции print, они выполнят печать в две строки. Этот пример покажет, как выполнять вывод в той же строке без перехода на новую.
Подписывайтесь на канал 👉@pythonofff
👍4
Списковое включение (быстрый способ)
Списковое включение — самый эффективный способ итерации любого списка. Это итерирование однострочного списка с включением в него цикла. Посмотрите приведенный ниже пример кода, чтобы понять, как это работает.
Подписывайтесь на канал 👉@pythonofff
Списковое включение — самый эффективный способ итерации любого списка. Это итерирование однострочного списка с включением в него цикла. Посмотрите приведенный ниже пример кода, чтобы понять, как это работает.
Подписывайтесь на канал 👉@pythonofff
👍6
Применение функции ко всем элементам в списке
Этот прием полезен в тех случаях, когда нужно применить функцию ко всем элементам списка, а не к каждому отдельно.
Подписывайтесь на канал 👉@pythonofff
Этот прием полезен в тех случаях, когда нужно применить функцию ко всем элементам списка, а не к каждому отдельно.
Подписывайтесь на канал 👉@pythonofff
👍6
Объединить два словаря
Для того чтобы объединить два словаря, есть как минимум два способа: прямой и современный.
Обратите внимание на то, что значения итогового словаря будут зависеть от порядка исходных словарей в функциях: если переставить местами словари a и b, значение ключа 'y' изменится на 2.
Подписывайтесь на канал 👉@pythonofff
Для того чтобы объединить два словаря, есть как минимум два способа: прямой и современный.
Обратите внимание на то, что значения итогового словаря будут зависеть от порядка исходных словарей в функциях: если переставить местами словари a и b, значение ключа 'y' изменится на 2.
Подписывайтесь на канал 👉@pythonofff
👍4
Как стать Python-разработчиком, за которым охотятся работодатели?
✔ Пройти бесплатные вводные курсы, чтобы познакомиться с профессией
✔ Начать учиться в группе с наставником и присоединиться к комьюнити из 26 000 айтишников
✔ Выполнить 4 крутых проекта для портфолио, поучаствовать в Open Source
✔ Подготовиться к трудоустройству по программе Карьерного трека
Начните сейчас!
✔ Пройти бесплатные вводные курсы, чтобы познакомиться с профессией
✔ Начать учиться в группе с наставником и присоединиться к комьюнити из 26 000 айтишников
✔ Выполнить 4 крутых проекта для портфолио, поучаствовать в Open Source
✔ Подготовиться к трудоустройству по программе Карьерного трека
Начните сейчас!
👍3
Проверка строки на палиндром
Простой вариант этого кода проверяет, является ли слово без пробелов и знаков препинания, написанное в одном регистре, палиндромом.
Более сложный вариант, который сможет проверить строку «А роза упала на лапу Азора», предлагаем написать самостоятельно. Общая идея: свести сложную строку к простой, хоть и длинной 'арозаупаланалапуазора'. Вам пригодятся функции строк .lower(), .join(), а также, возможно, преобразование строки в список.
Подписывайтесь на канал 👉@pythonofff
Простой вариант этого кода проверяет, является ли слово без пробелов и знаков препинания, написанное в одном регистре, палиндромом.
Более сложный вариант, который сможет проверить строку «А роза упала на лапу Азора», предлагаем написать самостоятельно. Общая идея: свести сложную строку к простой, хоть и длинной 'арозаупаланалапуазора'. Вам пригодятся функции строк .lower(), .join(), а также, возможно, преобразование строки в список.
Подписывайтесь на канал 👉@pythonofff
👍7
Транспонирование матрицы
В простейшем случае двумерная матрица может быть задана списком из нескольких списков одинаковой длины, которые представляют собой строки матрицы. Если вам требуется «повернуть на 90 градусов» такую матрицу или превратить строки в столбцы (транспонировать, как говорят математики)
Обратите внимание, что в итоговом списке элементами (то есть строками новой матрицы) будут кортежи — так работает используемая здесь функция zip ().
Подписывайтесь на канал 👉@pythonofff
В простейшем случае двумерная матрица может быть задана списком из нескольких списков одинаковой длины, которые представляют собой строки матрицы. Если вам требуется «повернуть на 90 градусов» такую матрицу или превратить строки в столбцы (транспонировать, как говорят математики)
Обратите внимание, что в итоговом списке элементами (то есть строками новой матрицы) будут кортежи — так работает используемая здесь функция zip ().
Подписывайтесь на канал 👉@pythonofff
👍4
Выражения присваивания (Assignment expressions)
Python 3.8
Так же известный как «моржовый оператор» (walrus operator) — новый синтаксис, который позволит присваивать значения переменным внутри другого выражения. Это, наверное, самое известное и обсуждаемое из нововведений версии 3.8.
Целью введения оператора является повышение читаемости кода, поэтому использовать его (как и все остальные операторы) стоит не при первой же возможности, а только тогда, когда это уместно.
Подписывайтесь на канал 👉@pythonofff
Python 3.8
Так же известный как «моржовый оператор» (walrus operator) — новый синтаксис, который позволит присваивать значения переменным внутри другого выражения. Это, наверное, самое известное и обсуждаемое из нововведений версии 3.8.
Целью введения оператора является повышение читаемости кода, поэтому использовать его (как и все остальные операторы) стоит не при первой же возможности, а только тогда, когда это уместно.
Подписывайтесь на канал 👉@pythonofff
👍2
Исключение из очереди
Класс collections.deque() это обобщение стеков и очередей и представляет собой двустороннюю очередь. Двусторонняя очередь deque() поддерживает поточно-ориентированные, эффективные по памяти операции добавления и извлечения элементов последовательности с любой стороны с примерно одинаковой производительностью O(1) в любом направлении.
Подписывайтесь на канал 👉@pythonofff
Класс collections.deque() это обобщение стеков и очередей и представляет собой двустороннюю очередь. Двусторонняя очередь deque() поддерживает поточно-ориентированные, эффективные по памяти операции добавления и извлечения элементов последовательности с любой стороны с примерно одинаковой производительностью O(1) в любом направлении.
Подписывайтесь на канал 👉@pythonofff
👍7
Итерация next() для генераторов
В большинстве обычных сценариев в программировании мы можем получить доступ к индексу и получить номер позиции, используя счётчик, который будет просто добавляемым значением
Однако вместо этого можно использовать next(). Next берёт итератор, который будет хранить текущую позицию в памяти и перебирать список в фоновом режиме.
Подписывайтесь на канал 👉@pythonofff
В большинстве обычных сценариев в программировании мы можем получить доступ к индексу и получить номер позиции, используя счётчик, который будет просто добавляемым значением
Однако вместо этого можно использовать next(). Next берёт итератор, который будет хранить текущую позицию в памяти и перебирать список в фоновом режиме.
Подписывайтесь на канал 👉@pythonofff
👍2