uk
Feedback
Python академия

Python академия

Відкрити в Telegram

Учи Python быстро и легко. Ежедневно публикуем практические задачи, разборы, готовые решения, объяснения логики, советы по алгоритмам. ✔ Подходит для прокачки навыков кодирования. По всем вопросам @evgenycarter

Показати більше
7 293
Підписники
+124 години
-97 днів
-4030 день
Архів дописів
⁠Автоматический счетчик во время итераций по коллекциям Привет. Достаточно часто я наблюдаю ситуации, в которых новички созда
⁠Автоматический счетчик во время итераций по коллекциям Привет. Достаточно часто я наблюдаю ситуации, в которых новички создают "костыли", когда им необходим счетчик во время обхода коллекции. И вот решение проблемы. Итак, встроенная в Python функция enumerate применяется для итерируемых коллекций (строки, списки, словари и другие) и создает объект, который генерирует кортежи, состоящие из двух элементов – индекса элемента и самого элемента. И это еще не все, enumerate также принимает необязательный второй аргумент, который позволяет указать, с какого числа начинать отсчет. По умолчанию индекс начинается с нуля, но в данном примере я передал единицу. Подписывайтесь на канал 👉@pythonofff

Вычисляем размер объектов в памяти Чтобы вычислить размер какого-либо объекта, можно воспользоваться функцией sys.getsizeof(o
Вычисляем размер объектов в памяти Чтобы вычислить размер какого-либо объекта, можно воспользоваться функцией sys.getsizeof(object[, default]). Поскольку Python написан в полном соответствии с парадигмой ООП, таким объектом может быть все что угодно. Однако, следует помнить, что хотя все built-in (встроенные) объекты и вернут правильный размер, в общем случае это не должно быть верно для каких-либо пользовательских объектов. Аргумент default позволяет определить значение, которое будет возвращено, если тип объекта не предоставляет средства для извлечения размера и вызовет TypeError . Функция getsizeof вызывает метод __sizeof__ объекта и добавляет дополнительные служебные данные сборщика мусора, если конечно объект управляется сборщиком мусора. Подписывайтесь на канал 👉@pythonofff

Explicit Conversion Flag Флаг явного преобразования используется для преобразования значения поля format перед его непосредст
Explicit Conversion Flag Флаг явного преобразования используется для преобразования значения поля format перед его непосредственным форматированием. Это поле можно использовать для переопределения поведения format для какого либо конкретного типа и форматирования значения. В настоящее время распространены два явных флага преобразования: !r – преобразует значение в строку, используя функцию repr() !s – преобразует значение в строку, используя функцию str() В примере, в случае с флагом !r строка 'Hello' будет напечатана с кавычками в поле шириной не менее 20 символов, а в случае с флагом !s – без кавычек (в более удобном для чтения виде). Подписывайтесь на канал 👉@pythonofff

Ускоряем код с помощью векторизации Одним из приемов для ускорения работы циклов является векторизация вычислений, т. е. испо
Ускоряем код с помощью векторизации Одним из приемов для ускорения работы циклов является векторизация вычислений, т. е. использование функций, которые поддерживают операции над векторами. Вообще лучший способ ускорить любой цикл – это отказаться от него. В примере выше для работы с функцией my_func мы могли бы вызвать ее в цикле для каждого элемента списка, но гораздо проще использовать vectorize. По сути, vectorize преобразует функцию таким образом, что она начинает принимать весь вектор целиком, а не отдельный его элемент. Надо помнить, что такой подход не всегда приводит к значительному ускорению. Подписывайтесь на канал 👉@pythonofff

⁠Кэширование функций Кэширование может сэкономить время, когда связанная с вводом или выводом функция периодически вызывается
⁠Кэширование функций Кэширование может сэкономить время, когда связанная с вводом или выводом функция периодически вызывается с одинаковыми аргументами. Раньше приходилось создавать свою реализацию, но в Python 3.2+ появился декоратор lru_cache, который позволяет нам быстро кэшировать и вскрывать возвращаемые значения функции. Давайте реализуем калькулятор чисел Фибоначчи с использованием кэша. Советую попробовать запустить любую рекурсивную функцию с кэшированием и без него, прирост в скорости замечается сразу. Подписывайтесь на канал 👉@pythonofff

Упаковка параметров с помощью urlencode Новая неделя – новые знания. В это утро понедельника я подготовил для вас крайне прак
Упаковка параметров с помощью urlencode Новая неделя – новые знания. В это утро понедельника я подготовил для вас крайне практичный пост. Довольно часто приходится работать с разнообразными API и совершать get-запросы с передачей множества параметров. Чаще всего составление запроса в коде выглядит примерно так: url = 'https://example.com?item={}&size={}&color={}&amount={}'.format('t-shirt', 'M', 'white', 5) Смотрится не слишком презентабельно, однако есть слегка более длинный, но значительно улучающий читаемость кода вариант – функция urlencode из из модуля urllib. Подписывайтесь на канал 👉@pythonofff

Генерация уникальных идентификаторов В этот пятничный вечер Адриан подготовил для вас небольшой, но крайне полезный приём, ко
Генерация уникальных идентификаторов В этот пятничный вечер Адриан подготовил для вас небольшой, но крайне полезный приём, который часто применяется на практике. Стандартный модуль uuid — быстрый и простой способ сгенерировать UUID (universally unique identifier), глобально уникальный идентификатор. Так, мы можем создать случайное 128-битное число, которое наверняка будет уникальным. Существует более 2¹²² возможных UUID. Это более 5 ундециллионов, то есть 36 нулей. Вероятность нахождения дубликатов в заданном наборе крайне мала. Даже при наличии триллиона UUID вероятность того, что среди них есть дубликат, гораздо меньше, чем один к миллиарду. Вполне недурно для двух строк кода. Подписывайтесь на канал 👉@pythonofff

Switch-конструкция с помощью словаря Привет, на связи Адриан. Начинающие программисты достаточно часто спрашивают меня про sw
Switch-конструкция с помощью словаря Привет, на связи Адриан. Начинающие программисты достаточно часто спрашивают меня про switch-конструкции, а в Python их вобщем-то нет. Однако существует одно хитрое решение – использовать словарь, где значениями будут функции. В качестве примера напишем словарь, который будет использован для математических операторов. В этом примере я использовал lambda-функции для упрощения кода, но вместо них можете подставить любые другие. Объясню немного подробнее, lambda – объявление анонимной функции, x и y - принимаемые аргументы, x + y – возвращаемый результат. Подписывайтесь на канал 👉@pythonofff

Именование среза с использованием функции slice Работа с множеством значений, которые заданы индексами, может быстро обернуть
Именование среза с использованием функции slice Работа с множеством значений, которые заданы индексами, может быстро обернуться беспорядком – как в плане поддержки, так и в плане читабельности кода. Один из вариантов улучшения ситуации заключается в использовании констант для значений, задаваемых индексами. Но есть и более удачный способ написания качественного кода, как показано на картинке Подписывайтесь на канал 👉@pythonofff

Частичное применение Сегодня поговорим об одном интересном концепте из области функционального программирования. Использовать
Частичное применение Сегодня поговорим об одном интересном концепте из области функционального программирования. Использовать будем функцию partial из стандартной библиотеки functools. Предоставление функции меньшего количества аргументов, чем она ожидает, называется частичным применением функций. Другими словами, это такая функция, которая принимает другую функцию с несколькими параметрами и возвращает функцию, но уже с меньшим количеством параметров. Подписывайтесь на канал 👉@pythonofff

Правильным ответом является [1, 2] Происходит так из-за того, что дефолтные параметры хранятся в неизменном кортеже в атрибут
Правильным ответом является [1, 2] Происходит так из-за того, что дефолтные параметры хранятся в неизменном кортеже в атрибуте функции defaults, который создается один раз в момент определения функции. А для того, чтобы добиться правильного поведения функции, следует воспользоваться ключевым словом None при о Подписывайтесь на канал 👉@pythonofff

3 трюка с itertools Сегодня мы рассмотрим несколько функций из довольно полезного модуля, позволяющих эффективно работать с и
3 трюка с itertools Сегодня мы рассмотрим несколько функций из довольно полезного модуля, позволяющих эффективно работать с итерируемыми объектами. Начнём с очень простой функции – chain. Она позволяет "склеивать" несколько итерируемых элементов в один. Далее, accumulate. Эта функция немного похожа на reduce, но вместо того, чтобы давать одно окончательное значение, она последовательно применяет функцию, заданную вторым аргументом (в данном случае min), к каждому последующему элементу по порядку: min(11), min(11, 3), min(11, 3, 9) и так далее. А для того, чтобы создавать комбинации из элементов выбранного итерируемого объекта, вам понадобится функция combinations. Вторым аргументом можно задать длину этой самой комбинации. Подписывайтесь на канал 👉@pythonofff

Ограничьте использование процессора и памяти Если вы не хотите оптимизировать память вашей программы или корректировать работ
Ограничьте использование процессора и памяти Если вы не хотите оптимизировать память вашей программы или корректировать работу процессора, то можно просто установить лимиты. К счастью, в Python для этого есть специальная библиотека Подписывайтесь на канал 👉@pythonofff

Методов списков list Напоминаю, списки в Python – упорядоченные последовательности элементов различных типов данных. Списки м
Методов списков list Напоминаю, списки в Python – упорядоченные последовательности элементов различных типов данных. Списки можно изменять, например, добавлять новые элементы. 1. list.append(x) – добавляет элемент, переданный в качестве аргумента, в конец списка. Этот метод является самым простым и распространённым в коде. 2. list.insert(i, x) – вставляет элемент в переданную позицию. Первый аргумент означает индекс элемента, перед которым будет добавлено новое значения. Таким образом, list.insert(0, x) вставит элемент в начало списка, а list.insert(len(list), x) эквивалентно записи list.append(x). 3. list.extend(iterable) – расширяет список, добавляя все элементы другой коллекции. Подписывайтесь на канал 👉@pythonofff

Преобразование списка строк Допустим, у нас есть список, содержащий числа в строковом формате. Чтобы преобразовать все эти эл
Преобразование списка строк Допустим, у нас есть список, содержащий числа в строковом формате. Чтобы преобразовать все эти элементы в числа с плавающей запятой, мы перебираем список в цикле for. Каждый элемент мы преобразуем из строкового в вещественный. Делается это при помощи функции float(). Мы создаем пустой список number, куда добавим наши числа в формате float. Далее мы используем цикл for для добавления каждого элемента из исходного списка в список number. При этом перед добавлением мы передаем в функцию float() каждый элемент, чтобы преобразовать его из строки в число с плавающей запятой. Подписывайтесь на канал 👉@pythonofff

🔥Как обрабатывать сырые данные и создавать понятные дашборды? Пройдите тест из 11 вопросов и проверьте свои навыки в аналити
🔥Как обрабатывать сырые данные и создавать понятные дашборды? Пройдите тест из 11 вопросов и проверьте свои навыки в аналитике данных, а также получите спец. цену на курс "Аналитик данных" от OTUS. На курсе вы овладеете необходимыми инструментами, чтобы получить старт в новой профессии или существенно снизить количество ежедневной рутины на текущей работе. 🎁После прохождения тестирования вы получите доступ к 2 открытым урокам по аналитике данных. Пройти тест: https://otus.pw/a2VA/ Нативная интеграция. Информация о продукте www.otus.ru

Сила «однострочников» (One-Liners) Вы устали пробираться между строк кода и теряться в условных конструкциях? Тогда, одностро
Сила «однострочников» (One-Liners) Вы устали пробираться между строк кода и теряться в условных конструкциях? Тогда, однострочники Python — это то, что вам нужно Подписывайтесь на канал 👉@pythonofff

Как сделать запрос DELETE Как следует из названия, если вы хотите удалить ресурс из API, вы можете использовать запрос DELETE
Как сделать запрос DELETE Как следует из названия, если вы хотите удалить ресурс из API, вы можете использовать запрос DELETE. Удалим товар с идентификатором, равным 21. Подписывайтесь на канал 👉@pythonofff

🔥Хочешь сделать карьеру в направлении Machine Learning? Начни с открытого урока "Профессия Data Science - это проще, чем каж
🔥Хочешь сделать карьеру в направлении Machine Learning? Начни с открытого урока "Профессия Data Science - это проще, чем кажется" от OTUS, который пройдёт: 2 августа в 20:00. Вебинар приурочен к старту онлайн-курса "Machine Learning". ✨На занятии расскажем про профессию Data Science, а также чем методы машинного обучения отличаются от методов классического программирования. Обсудим почему специалисты в этой области так востребованы и решим одну из задач машинного обучения на практике! ⚡️Урок будет полезен: - IT-специалисту, который хочет перейти в Data Science - Начинающему Data Scientist и специалисту по машинному обучению, желающему углубиться в профессию - Тому, кто самостоятельно изучает Data Science - Для того, кто хочет войти в IT, но не знает что выбрать После вебинара курс можно приобрести в рассрочку. 👉Регистрация на урок: https://otus.pw/0Zm7/ Нативная интеграция. Информация о продукте www.otus.ru

Множественный вызов метода randint() Для этого кода повторение метода random.randint() дает нам разные случайные целые числа
Множественный вызов метода randint() Для этого кода повторение метода random.randint() дает нам разные случайные целые числа для каждого вызова в пределах от 10 до 100. Подписывайтесь на канал 👉@pythonofff