Python академия
7.07K subscribers
2.64K photos
4 videos
485 links
Учи Python быстро и легко.

Ежедневно публикуем практические задачи, разборы, готовые решения, объяснения логики, советы по алгоритмам.

✔ Подходит для прокачки навыков кодирования.

По всем вопросам @evgenycarter
Download Telegram
Избегайте неоправданных циклов с коллекциями

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

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

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

📲 Мы в MAX

Подписывайтесь на канал 👉@pythonofff
👍1
Дрон потерял связь, навигация дала сбой или просело питание. Как понять, что произошло в полёте и какие события привели к аварии? Ответы стоит искать в логах автопилота — важно уметь сопоставлять параметры и читать графики.

5 ноября в 20:00 на открытом уроке курса «Разработчик ПО для дронов: ArduPilot, C++ и ROS 2» разберёте логи реальных аварий БПЛА и настройку Failsafe-сценариев.

Узнаете, какие данные записывает автопилот и как выгрузить DataFlash-логи через Mission Planner. На примере двух-трёх случаев рассмотрите сбои навигации, питания и связи. Разберёте графики EKF, IMU и токов, чтобы восстановить последовательность событий и разобраться в возможных причинах отказа.

Затем перейдёте к аварийным сценариям в ArduPilot. Настроите стандартный Failsafe через графический интерфейс и проверите поведение дрона при потере связи в симуляторе SITL.

Урок подойдёт C/C++- и Python-разработчикам, инженерам встраиваемых систем и специалистам по БПЛА, которые хотят глубже понимать работу автопилота. После занятия вы сможете увереннее разбирать полётные логи и проверять настройки реакции на сбои в симуляторе.

Урок проведёт Игорь Морозов.

Зарегистрироваться: https://vk.cc/d3mb1k

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
👎2👍1
"Быстрый" контейнер deque

Встроенных списков в Python иногда может не хватать, поэтому покажем одну хорошую альтернативу. Deque может быть реализован c помощью модуля collections.

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

Также для deque есть возможность использовать стандартные функции по типу sum, min, max и тому подобные.

📲 Мы в MAX

Подписывайтесь на канал 👉@pythonofff
🔥1
Как проверить существование переменной в Python?

Вы можете использовать in locals() или in globals(), чтобы проверить переменная существует в Python, разница только:

in locals() проверяет если переменная объявлена в локальной зоне видимости
in globals() проверяет если переменная объявлена в глобальной зоне видимости

📲 Мы в MAX

Подписывайтесь на канал 👉@pythonofff
🔥2
Контекстные менеджеры

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

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

Чтобы каждый раз не вызывать метод close мы можем воспользоваться контекстным менеджером функции open, который автоматически закроет файл после выхода из блока.

📲 Мы в MAX

Подписывайтесь на канал 👉@pythonofff
👍2
Вывод значения по умолчанию для отсутствующего ключа словаря

Если вы обратитесь к несуществующему ключу словаря, то это вызовет исключение. Избежать этого можно, вызывая метод get. В примере метод выдает None (по умолчанию) или заданное значение аргумента.

📲 Мы в MAX

Подписывайтесь на канал 👉@pythonofff
👍1
Декораторы

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

Многие библиотеки работают с использованием декораторов: Flask и aiogram хорошие тому примеры.

Мы показываем лишь простой пример, возможности куда шире. Позже покажем пример использования с упоминаемыми выше библиотеками.

📲 Мы в MAX

Подписывайтесь на канал 👉@pythonofff
👍1
Удаление дубликатов в списке

Первое что приходит на ум — преобразовать список во множество и обратно. Это хороший и рабочий способ. Но если вам нужно сохранить последовательность, то этот способ не подойдёт. С этой задачей легко справится OrderedDict из модуля collections

📲 Мы в MAX

Подписывайтесь на канал 👉@pythonofff
👍2