⚡️ Модуль collections. Класс deque
Раннее мы писали про Counter и OrderedDict, настало время поговорить про deque.
deque — класс, предоставляющий двойную очередь (то есть элементы можно брать и с начала и с конца). Его основное преимущество над списком — скорость при изменении размера. Добавление и удаление элементов имеет O(1), а у списка — O(n).
#миниурок #collections
Раннее мы писали про Counter и OrderedDict, настало время поговорить про deque.
deque — класс, предоставляющий двойную очередь (то есть элементы можно брать и с начала и с конца). Его основное преимущество над списком — скорость при изменении размера. Добавление и удаление элементов имеет O(1), а у списка — O(n).
append(x)
, appendleft(x)
— добавляет элемент в конец/начало.pop()
, popleft()
— возвращает и удаляет элемента с конца/начала очереди.rotate(n=1)
— перемещает n объектов с конца в начало очереди#миниурок #collections
⚡️ Модуль collections. Тип namedtuple
Часто, используя кортежи, мы берём значения с помощью индексаторов (квадратных скобочек), что выглядит не особо красиво и совсем непонятно для другого программиста.
Чтобы исправить эту проблему, Python разработчики придумали namedtuple, который предоставляет тип кортежа, в котором данные можно получить как атрибуты.
#миниурок #collections
Часто, используя кортежи, мы берём значения с помощью индексаторов (квадратных скобочек), что выглядит не особо красиво и совсем непонятно для другого программиста.
Чтобы исправить эту проблему, Python разработчики придумали namedtuple, который предоставляет тип кортежа, в котором данные можно получить как атрибуты.
namedtuple(typename, field_names)
— создаёт тип кортежа с именем typename
и атрибутами field_names
, и возвращает тип.#миниурок #collections
⚡️ Редактируем видео
Модуль moviepy позволяет быстро и просто обрабатывать видео: склеивать, обрезать, сжимать, переворачивать и выполнять множество других операций.
Установка:
Стоит отметить, что модуль использует процессор, а не видеокарту для рендера. Поэтому, если вам нужно больше мощностей воспользуйтесь выделенными серверами с большей производительностью.
Если он вас заинтересовал, то можете посмотреть парочку примеров её работы.
#миниурок #moviepy
Модуль moviepy позволяет быстро и просто обрабатывать видео: склеивать, обрезать, сжимать, переворачивать и выполнять множество других операций.
Установка:
pip install moviepy
Библиотека требует от пользователя минимум кода и имеет хорошую документацию, поэтому освоить её не составит труда. На примере выше мы просто склеиваем два видео в одно и рендерим его.Стоит отметить, что модуль использует процессор, а не видеокарту для рендера. Поэтому, если вам нужно больше мощностей воспользуйтесь выделенными серверами с большей производительностью.
Если он вас заинтересовал, то можете посмотреть парочку примеров её работы.
#миниурок #moviepy
⚡️ Задачка с собеседования | #Easy
Условие:
Ваша задача — написать функцию, которая проверяет, правильно ли записаны скобочки в полученной строке. Строка состоит только из символа "(" и ")", никаких проверок делать не нужно.
Примеры:
solution('()') -> True
solution(')()') -> False
solution('(') -> False
solution('(())((()())())') -> True
📌 Пишите ваше решение в комментариях. Решение будет через несколько часов на этом канале. 👇
#Задачка_с_собеседования
Условие:
Ваша задача — написать функцию, которая проверяет, правильно ли записаны скобочки в полученной строке. Строка состоит только из символа "(" и ")", никаких проверок делать не нужно.
Примеры:
solution('()') -> True
solution(')()') -> False
solution('(') -> False
solution('(())((()())())') -> True
📌 Пишите ваше решение в комментариях. Решение будет через несколько часов на этом канале. 👇
#Задачка_с_собеседования
⚡️ Итераторы и генераторы
Если вы подписаны на канал довольно давно, то, наверное, уже слышали эти слова, но что они значат?
Итератор — объект, по которому можно «пройтись» с помощью цикла. map, filter, zip, все они возвращают итераторы, как и итерируемые объекты (list, set, dict). Основной их особенностью является наличие метода
Генератор — тот же самый итератор, но «пройтись» по нему можно только один раз. Его используют, например, при создании генераторных списков. Ещё генераторами являются функции, которые используют yield.
#теория
Если вы подписаны на канал довольно давно, то, наверное, уже слышали эти слова, но что они значат?
Итератор — объект, по которому можно «пройтись» с помощью цикла. map, filter, zip, все они возвращают итераторы, как и итерируемые объекты (list, set, dict). Основной их особенностью является наличие метода
__next__
.Генератор — тот же самый итератор, но «пройтись» по нему можно только один раз. Его используют, например, при создании генераторных списков. Ещё генераторами являются функции, которые используют yield.
#теория
⚡️ Методы генераторы
В отличие от итераторов, у генераторов есть собственные методы, позволяющие контролировать их работу. Их три:
С помощью send, к слову, создают корутины — функции, которым можно передавать значения, останавливать и возобновлять работу программы.
#теория
В отличие от итераторов, у генераторов есть собственные методы, позволяющие контролировать их работу. Их три:
close
, throw
, send
.close()
— останавливает генератор на следующем проходе.throw()
— выводит ошибку на экран и останавливает выполнение генератора сразу же. С помощью них можно контролировать бесконечные генераторы.send()
— самый интересный метод. Позволяет передавать значения генератору. Первым всегда должно быть None, что бы запустить его. С помощью send, к слову, создают корутины — функции, которым можно передавать значения, останавливать и возобновлять работу программы.
#теория
⚡️ Задачка с собеседования | #Easy
Условие:
Ваша задача — написать функцию, которая перемножает все цифры некого числа num, пока оно не станет меньше 9. Число всегда больше нуля.
Примеры:
persist(999) -> 2
# 999 -> 9 * 9 * 9 = 729 -> 7 * 2 * 9 = 126 -> 1 * 2 * 6 = 12 -> 1 * 2 = 2
persist(1000) -> 0
persist(423) -> 8
persist(1) -> 1
📌 Пишите ваше решение в комментариях. Решение будет через несколько часов на этом канале. 👇
#Задачка_с_собеседования
Условие:
Ваша задача — написать функцию, которая перемножает все цифры некого числа num, пока оно не станет меньше 9. Число всегда больше нуля.
Примеры:
persist(999) -> 2
# 999 -> 9 * 9 * 9 = 729 -> 7 * 2 * 9 = 126 -> 1 * 2 * 6 = 12 -> 1 * 2 = 2
persist(1000) -> 0
persist(423) -> 8
persist(1) -> 1
📌 Пишите ваше решение в комментариях. Решение будет через несколько часов на этом канале. 👇
#Задачка_с_собеседования
⚡️ Находим стилистические ошибки
Дабы избежать конфликтов между программистами, разработчики создали соглашение под названием "PEP 8", в котором описывались правила оформления кода.
Но хранить их все в голове довольно тяжело, поэтому придумали flake8 — скрипт, что позволяет проверить программу на стилистические ошибки.
Установка:
Также вы можете задавать свои настройки — подробнее можно почитать на сайте документации.
#миниурок #flake8
Дабы избежать конфликтов между программистами, разработчики создали соглашение под названием "PEP 8", в котором описывались правила оформления кода.
Но хранить их все в голове довольно тяжело, поэтому придумали flake8 — скрипт, что позволяет проверить программу на стилистические ошибки.
Установка:
pip install flake8
Запускается скрипт довольно просто, достаточно вписать в терминал flake8 file1.py file2.py
или flake8 folder_name
.Также вы можете задавать свои настройки — подробнее можно почитать на сайте документации.
#миниурок #flake8
This media is not supported in your browser
VIEW IN TELEGRAM
⚡️ Профилируем код
В этот раз мы рассмотрим профилировщик под именем py-spy, позволяющий отслеживать потребление ресурсов, не редактируя код.
Установка:
py-spy top — отображает нагрузку на процессор. Очень похожа на команду top из Unix.
py-spy record — записывает использование ресурсов в svg файл.
py-spy dump — собирает стек вызовов и выводит на консоль.
На гиф — результат работы первой команды. Если вам стало интересно, то можете посетить github страницу проекта.
#миниурок #pyspy
В этот раз мы рассмотрим профилировщик под именем py-spy, позволяющий отслеживать потребление ресурсов, не редактируя код.
Установка:
pip install py-spy
Давайте поговорим о командах, которые используются в скрипте: все они вызываются с параметром --pid.py-spy top — отображает нагрузку на процессор. Очень похожа на команду top из Unix.
py-spy record — записывает использование ресурсов в svg файл.
py-spy dump — собирает стек вызовов и выводит на консоль.
На гиф — результат работы первой команды. Если вам стало интересно, то можете посетить github страницу проекта.
#миниурок #pyspy