⚡️ Задачка с собеседования | #Medium
Условие:
Напишите функцию, которая принимает список чисел и переносит все нули в его конец. Функция не должна ничего возвращать, она только меняет существующий массив.
Придумайте решение без append, pop и remove, это довольно медленные операции.
Пример:
move_zeros([1, 0, 0]) ➞ [1, 0, 0]
move_zeros([1, 0, 5]) ➞ [1, 5, 0]
move_zeros([0, 0, 1]) ➞ [1, 0, 0]
📌 Пишите ваше решение в комментариях. Решение будет через несколько часов на этом канале. 👇
#Задачка_с_собеседования
Условие:
Напишите функцию, которая принимает список чисел и переносит все нули в его конец. Функция не должна ничего возвращать, она только меняет существующий массив.
Придумайте решение без append, pop и remove, это довольно медленные операции.
Пример:
move_zeros([1, 0, 0]) ➞ [1, 0, 0]
move_zeros([1, 0, 5]) ➞ [1, 5, 0]
move_zeros([0, 0, 1]) ➞ [1, 0, 0]
📌 Пишите ваше решение в комментариях. Решение будет через несколько часов на этом канале. 👇
#Задачка_с_собеседования
👍5
⚡️ Фишка срезов
С помощью срезов мы можем не просто получать определённое количество элементов, а и менять их. Называют это так: «Изменение путем присваивания».
Таким образом мы заменяем элементы внутри этого среза другими из итератора (список, кортёж, словарь, range).
С их помощью мы также можем добавлять/удалять элементы, опустошать список и многое другое. Но в разреженных срезах такое не работает.
#теория
С помощью срезов мы можем не просто получать определённое количество элементов, а и менять их. Называют это так: «Изменение путем присваивания».
Таким образом мы заменяем элементы внутри этого среза другими из итератора (список, кортёж, словарь, range).
С их помощью мы также можем добавлять/удалять элементы, опустошать список и многое другое. Но в разреженных срезах такое не работает.
#теория
👍14
⚡️ Парсим XML и HTML
И самым лучшим выбором для этого является lxml. Это библиотека позволяет быстро обрабатывать файлы XML и HTML формата.
Установка:
Единственным недостатком модуля является его сильная зависимость от C. Подробнее обо всём на GitHub.
#миниурок #lxml
И самым лучшим выбором для этого является lxml. Это библиотека позволяет быстро обрабатывать файлы XML и HTML формата.
Установка:
pip install lxml
Он намного быстрее, чем html.parser и с ним в разы проще работать. Более стабильной и удобной альтернативой является html5lib, но это довольно медленная библиотека.Единственным недостатком модуля является его сильная зависимость от C. Подробнее обо всём на GitHub.
#миниурок #lxml
👍6
⚡️ Задачка с собеседования | #Medium
Условие:
Вам нужно найти в промежутке от a до b (range(a, b + 1)) числа с особым свойством. Это те, у которых сумма их цифр, возведенных в степень их позиции равняется тому же числу.
Примеры:
sum_dig_pow(1, 100) ➞ [1, 2, 3, 4, 5, 6, 7, 8, 9, 89]
sum_dig_pow(100, 135) ➞ [135]
sum_dig_pow(90, 100) ➞ []
📌 Пишите ваше решение в комментариях. Решение будет через несколько часов на этом канале. 👇
#Задачка_с_собеседования
Условие:
Вам нужно найти в промежутке от a до b (range(a, b + 1)) числа с особым свойством. Это те, у которых сумма их цифр, возведенных в степень их позиции равняется тому же числу.
Примеры:
sum_dig_pow(1, 100) ➞ [1, 2, 3, 4, 5, 6, 7, 8, 9, 89]
sum_dig_pow(100, 135) ➞ [135]
sum_dig_pow(90, 100) ➞ []
📌 Пишите ваше решение в комментариях. Решение будет через несколько часов на этом канале. 👇
#Задачка_с_собеседования
👍2
⚡️ Создаём игру
С помощью arcade мы можем создавать полноценные игры с 2D графикой.
Установка:
Конечно, есть и недостатки: вам придётся вручную управлять окном и его рендером, а также циклом обработки действий.
У модуля очень хорошая документация, поэтому проблем с его изучением возникнуть не должно.
#миниурок #arcade
С помощью arcade мы можем создавать полноценные игры с 2D графикой.
Установка:
pip install arcade
Модуль может отрисовывать спрайты, анимировать их, работать с клавиатурой и со звуками. Но у него реализованы и более сложные системы, такие как физика и система частиц.Конечно, есть и недостатки: вам придётся вручную управлять окном и его рендером, а также циклом обработки действий.
У модуля очень хорошая документация, поэтому проблем с его изучением возникнуть не должно.
#миниурок #arcade
👍8
👍2
⚡️ Генераторы и yield
В Python есть объекты, которые могут возвращать не одно значение, а несколько. Делается это за счёт оператора yield.
Когда мы используем его в функции и вызываем её, в результате получаем генератор. Получить значение из него можно с помощью функции
Код в функции выполняется также, как и всегда, но останавливается, когда встречает yield и ждёт следующего вызова
Также по генератором можно пройтись с помощью цикла for, но только один раз.
#теория
В Python есть объекты, которые могут возвращать не одно значение, а несколько. Делается это за счёт оператора yield.
Когда мы используем его в функции и вызываем её, в результате получаем генератор. Получить значение из него можно с помощью функции
next()
.Код в функции выполняется также, как и всегда, но останавливается, когда встречает yield и ждёт следующего вызова
next()
.Также по генератором можно пройтись с помощью цикла for, но только один раз.
#теория
👍9
Что выведет код выше?
Anonymous Quiz
7%
True True True
43%
True False True
25%
False False True
4%
False False False
13%
Ошибку
8%
Узнать ответ
⚡️ Шаблон Снимок
Паттерн позволяет сохранять и восстанавливать прошлые состояния объектов, при этом не раскрывая подробности их реализации.
Представим, что нам надо сохранить данные об игроке. И если позиция вполне может быть публичной переменной, то состояние игрока будет скрыто.
Класс игрока может самостоятельно собрать данные, которые необходимо сохранить и вернуть их в виде объекта Memento. Также класс игрока реализует восстановление из Memento.
#паттерны #memento
Паттерн позволяет сохранять и восстанавливать прошлые состояния объектов, при этом не раскрывая подробности их реализации.
Представим, что нам надо сохранить данные об игроке. И если позиция вполне может быть публичной переменной, то состояние игрока будет скрыто.
Класс игрока может самостоятельно собрать данные, которые необходимо сохранить и вернуть их в виде объекта Memento. Также класс игрока реализует восстановление из Memento.
#паттерны #memento
👍5🔥1
⚡️ Задачка с собеседования | #Medium
Условие:
По заданному числу найдите перестановку с наименьшим абсолютным значением (без нулей в начале числа). На вход идёт целое число и в результате тоже должно быть целое число.
Примеры:
min_permutation(0) ➞ 0
min_permutation(-20) ➞ -20
min_permutation(293940) ➞ 203499
📌 Пишите ваше решение в комментариях. Решение будет через несколько часов на этом канале. 👇
#Задачка_с_собеседования
Условие:
По заданному числу найдите перестановку с наименьшим абсолютным значением (без нулей в начале числа). На вход идёт целое число и в результате тоже должно быть целое число.
Примеры:
min_permutation(0) ➞ 0
min_permutation(-20) ➞ -20
min_permutation(293940) ➞ 203499
📌 Пишите ваше решение в комментариях. Решение будет через несколько часов на этом канале. 👇
#Задачка_с_собеседования
👍2
⚡️ VSCode в браузере
Это легковесная версия Visual Studio Code, которая отлично работает в браузере. Найти её можно на этом сайте.
Он поддерживает почти все функции десктопного редактора (подсветка, автодополнение). Также может работать с git и поддерживает расширения, но с небольшими ограничениями.
К тому же, IDE прекрасно работает на планшете, так что вы сможете быстро дописать код, пока куда-то едете. Подробнее обо всём в блоге (англ. яз.)
#миниурок #ide
Это легковесная версия Visual Studio Code, которая отлично работает в браузере. Найти её можно на этом сайте.
Он поддерживает почти все функции десктопного редактора (подсветка, автодополнение). Также может работать с git и поддерживает расширения, но с небольшими ограничениями.
К тому же, IDE прекрасно работает на планшете, так что вы сможете быстро дописать код, пока куда-то едете. Подробнее обо всём в блоге (англ. яз.)
#миниурок #ide
👍13🔥4
⚡️ Немного про атрибуты
Все атрибуты, которые вы храните в классе можно найти в переменной
Порой подобная фича бывает лишней. К тому же подобный подход потребляет больше памяти. Если с маленькими объектами проблем не возникнет, то вот на больших вы заметите значительную разницу.
Тут на помощь приходит
#теория
Все атрибуты, которые вы храните в классе можно найти в переменной
__dict__
. Если вы попытаетесь добавить новый атрибут, переменная изменится.Порой подобная фича бывает лишней. К тому же подобный подход потребляет больше памяти. Если с маленькими объектами проблем не возникнет, то вот на больших вы заметите значительную разницу.
Тут на помощь приходит
__slots__
, он указывает, что у класса могут быть только атрибуты, которые находятся в списке.#теория
👍7