💥 Решаем задачу на Python тремя способами: от Junior до Senior
✅ Формулировка задачи
Дан список arr с произвольным количеством элементов. Необходимо написать функцию tuple_creator, которая вернет список кортежей, каждый из которых будет содержать порядковый номер и элемент списка arr. При этом нумерацию нужно начинать не с нуля, а с некоторого заданного числа n.
Пример:
✅ Вариант 1: Junior
Самый простой вариант решения задачи:
1. Найти длину исходного массива
2. В цикле for получить индексы каждого элемента
3. Добавить к результату кортеж из индекса и соответствующего элемента
- Нахождение длины массива - лишняя операция
- Конструкция range(len(l)) - плохой стиль
- Получение элементов через arri - зачастую плохой стиль
✅ Вариант 2: Middle
Если вспомнить про существование функции enumerate, то можно существенно «облагородить» код.
- Все еще присутствует цикл for
- Кусок кода с append напрашивается на оптимизацию :)
- В начале мы создаем пустой список
✅ Вариант 3: Senior
Настоящий спец в Python вспомнит также, что функция enumerate принимает необязательный аргумент start, а с помощью list можно избавиться от создания пустого списка и операции append.
✅ Формулировка задачи
Дан список arr с произвольным количеством элементов. Необходимо написать функцию tuple_creator, которая вернет список кортежей, каждый из которых будет содержать порядковый номер и элемент списка arr. При этом нумерацию нужно начинать не с нуля, а с некоторого заданного числа n.
Пример:
Дано:
arr = ['aaa', 125, 'bbb'],
n = 3
Результат:
[(3,'aaa'),(4,125),(5,'bbb')]
Попробуйте решить задачу до того, как посмотрите наши варианты решения 🙃 Ссылка на задачу 👉🏻 https://vk.cc/caNCl1✅ Вариант 1: Junior
Самый простой вариант решения задачи:
1. Найти длину исходного массива
2. В цикле for получить индексы каждого элемента
3. Добавить к результату кортеж из индекса и соответствующего элемента
class Answer:⛔️ Минусы такого решения:
def tuple_creator(self, arr, n):
# создаем пустой
список для записи
результата
res = []
# вычисляем длину
массива
l = len(arr)
# проходимся по всем
элементам массива
for i in range(l):
# добавляем к
результату
кортеж
(индекс,
значение)
res.append((i+n, arr[i]))
return res
- Нахождение длины массива - лишняя операция
- Конструкция range(len(l)) - плохой стиль
- Получение элементов через arri - зачастую плохой стиль
✅ Вариант 2: Middle
Если вспомнить про существование функции enumerate, то можно существенно «облагородить» код.
class Answer:⛔️ Минусы такого решения:
def tuple_creator(self, arr, n):
# создаем пустой
список для записи
результата
res = []
# проходимся по всем
элементам массива
enumerate также
вычисляет индекс
for i, el in enumerate(arr):
# добавляем к
результату
кортеж (индекс,
значение)
res.append((i+n, el))
return res
- Все еще присутствует цикл for
- Кусок кода с append напрашивается на оптимизацию :)
- В начале мы создаем пустой список
✅ Вариант 3: Senior
Настоящий спец в Python вспомнит также, что функция enumerate принимает необязательный аргумент start, а с помощью list можно избавиться от создания пустого списка и операции append.
class Answer:
def tuple_creator(self, arr, n):
return list(enumerate(arr, start = n))
👍9🔥4👎2
🤔 Про личную эффективность и как все успевать?
Недавно в телеграм-канале Федора Борщева, предпринимателя и программиста, поднимался вопрос личной эффективности. Федор делился собственным опытом и нам показалось это интересным, ведь такая проблема стоит у любого IT-специалиста.
✅ Вот, что пишет Федор:
12 дел в день
Одна из областей жизни, которая радикально поменялась у меня при переходе в предпринимательство — это продуктивность. Вернее даже не поменялась, а развалилась нахрен — ГТД в чистом виде не справляется с неопределённостью, которую дают два моих бизнеса. В тяжёлые моменты показатели продуктивности выглядели страшно — каждый новый день в things начинался с 10-15 незакрытых вчера задач. Потупил полдня — лови ещё 20 задач в очереди. Количество встреч тоже зашкаливало — 8 встреч в день было нормой.
К счастью, мне хватило ума не искать новую методику продуктивности, не уезжать в Тибет и не нанимать тренера личной эффективности, а ввести ограничения, которые сильно сократили количество переработок — делать за день не больше 12 дел и проводить в неделю не больше 15 встреч.
Когда жёстко ограничиваешь количество работы, начинаешь более тщательно относиться к выбору задач. К примеру, я почти перестал делать задачи просто ради того, чтобы их сделать. Если уж я и пишу код — я его пишу не чтобы зарелизить фичу, а чтобы показать команде новую технологию или подход. Если я прихожу на встречу с клиентом — я прихожу, чтобы сократить себе, команде и клиенту объём работы, а не послушать отчёт о статусе проекта.
В комментариях писали разное: что отдыхать надо больше; что количество встреч не зависит от нас - как руководство скажет, так и будет; что максимум, сколько можно сделать: 3-4 дела в день и так далее.
Вопрос, конечно, животрепещущий. Как организовать свое время так, чтобы оставалось еще на отдых и личную жизнь? Но при этом чтобы все успевать и эффективность не падала?
❓Поделитесь своим опытом в комментариях - какие методики вы используете? Как распределяете время и соблюдаете work-life balance?
Недавно в телеграм-канале Федора Борщева, предпринимателя и программиста, поднимался вопрос личной эффективности. Федор делился собственным опытом и нам показалось это интересным, ведь такая проблема стоит у любого IT-специалиста.
✅ Вот, что пишет Федор:
12 дел в день
Одна из областей жизни, которая радикально поменялась у меня при переходе в предпринимательство — это продуктивность. Вернее даже не поменялась, а развалилась нахрен — ГТД в чистом виде не справляется с неопределённостью, которую дают два моих бизнеса. В тяжёлые моменты показатели продуктивности выглядели страшно — каждый новый день в things начинался с 10-15 незакрытых вчера задач. Потупил полдня — лови ещё 20 задач в очереди. Количество встреч тоже зашкаливало — 8 встреч в день было нормой.
К счастью, мне хватило ума не искать новую методику продуктивности, не уезжать в Тибет и не нанимать тренера личной эффективности, а ввести ограничения, которые сильно сократили количество переработок — делать за день не больше 12 дел и проводить в неделю не больше 15 встреч.
Когда жёстко ограничиваешь количество работы, начинаешь более тщательно относиться к выбору задач. К примеру, я почти перестал делать задачи просто ради того, чтобы их сделать. Если уж я и пишу код — я его пишу не чтобы зарелизить фичу, а чтобы показать команде новую технологию или подход. Если я прихожу на встречу с клиентом — я прихожу, чтобы сократить себе, команде и клиенту объём работы, а не послушать отчёт о статусе проекта.
В комментариях писали разное: что отдыхать надо больше; что количество встреч не зависит от нас - как руководство скажет, так и будет; что максимум, сколько можно сделать: 3-4 дела в день и так далее.
Вопрос, конечно, животрепещущий. Как организовать свое время так, чтобы оставалось еще на отдых и личную жизнь? Но при этом чтобы все успевать и эффективность не падала?
❓Поделитесь своим опытом в комментариях - какие методики вы используете? Как распределяете время и соблюдаете work-life balance?
👍4
🔥 Как сделать экселевский ВПР (VLOOKUP) с помощью Pandas?
Типичная задача: дано 2 датафрейма и необходимо связать их по ключу. Как сделать это в Excel, уже наверно все знают - на помощь приходит функция ВПР. А как быть в Pandas? На помощь приходит функция merge!
Сегодня вместе с онлайн-университетом SF Education разобрали, как пользоваться Pandas-функцией merge, какие у нее параметры и как это работает на реальном примере.
🧐 Кстати, а вам часто приходится решать задачи, которые раньше решали вручную в экселе, с помощью Pandas?
Типичная задача: дано 2 датафрейма и необходимо связать их по ключу. Как сделать это в Excel, уже наверно все знают - на помощь приходит функция ВПР. А как быть в Pandas? На помощь приходит функция merge!
Сегодня вместе с онлайн-университетом SF Education разобрали, как пользоваться Pandas-функцией merge, какие у нее параметры и как это работает на реальном примере.
🧐 Кстати, а вам часто приходится решать задачи, которые раньше решали вручную в экселе, с помощью Pandas?
👍6🔥5
🔥 Как правильно писать документацию для кода на Python?
Есть несколько основных способов задокументировать свой код и сделать его более понятным:
→ Обычные комментарии
→ Докстринги
→ Полноценная документация
Давайте рассмотрим каждый способ в отдельности.
✅ ОБЫЧНЫЕ КОММЕНТАРИИ
Обычные комментарии - части кода, которые начинаются в Python с решетки # и содержат небольшие пояснительные сообщения.
Например:
✅ ДОКСТРИНГИ
Докстринг (строка документации) - это однострочный или многострочный строковый литерал, разделенный тройными одинарными или двойными кавычками """<denoscription>""" в начале модуля, класса, метода или функции, который описывает, что делает функция.
Только в случае, если это первый оператор в функции, он может быть распознан Python и доступен как атрибуты с помощью метода doc или функции help().
Пример смотрите в карточках 👆🏻
❗️Докстринги могут быть как однострочными, так и многострочными.
Однострочные докстринги обычно дают саммари - кратко описывают: что функция делает и что возвращает. Для шаблона используйте фразу «делает то, возвращает это».
В многострочных докстрингах принято описывать:
→ краткое описание того, что функция делает
→ аргументы - их типы и «физический» смысл
→ информация о возвращаемых значениях
→ какие ошибки возбуждаются
→ заметки
→ что рекомендуется почитать
→ предупреждения
Примеры однострочного и многострочного докстринга ищите в карточках!
✅ SPHINX
Последнее, про что мы хотим рассказать - Sphinx. В сущности, это те же многострочные докстринги, просто организованные по некоторым правилам. Этакий общепринятый эталон.
Этот стиль является стандартом в Python.
‼️Основные ключевые слова Sphinx:
→
→
→
→
→
→
Общая структура документации Sphinx подробно расписана, как вы уже поняли, в карточках 😉
Пользоваться документацией Sphinx в повседневной жизни очень просто.
✅ В IDE PyCharm от JetBrains это идет по умолчанию - достаточно начать писать докстринг и нажать Enter.
✅ Чтобы использовать Sphinx в VS Code, сделайте так:
1. Установите расширение Python Docstring Generator
2. Как только вы начнете набирать докстринг, IDE предложит вам Generate Docstring. По умолчанию генерируется Sphinx. Поменять тип можно в настройках расширения
Есть несколько основных способов задокументировать свой код и сделать его более понятным:
→ Обычные комментарии
→ Докстринги
→ Полноценная документация
Давайте рассмотрим каждый способ в отдельности.
✅ ОБЫЧНЫЕ КОММЕНТАРИИ
Обычные комментарии - части кода, которые начинаются в Python с решетки # и содержат небольшие пояснительные сообщения.
Например:
# проверяем тип полученного ответаТакие комментарии нужны для того, чтобы ваш код было проще читать и понимать. Полноценной документацией они не являются.
if isinstance(response): …
✅ ДОКСТРИНГИ
Докстринг (строка документации) - это однострочный или многострочный строковый литерал, разделенный тройными одинарными или двойными кавычками """<denoscription>""" в начале модуля, класса, метода или функции, который описывает, что делает функция.
Только в случае, если это первый оператор в функции, он может быть распознан Python и доступен как атрибуты с помощью метода doc или функции help().
Пример смотрите в карточках 👆🏻
❗️Докстринги могут быть как однострочными, так и многострочными.
Однострочные докстринги обычно дают саммари - кратко описывают: что функция делает и что возвращает. Для шаблона используйте фразу «делает то, возвращает это».
В многострочных докстрингах принято описывать:
→ краткое описание того, что функция делает
→ аргументы - их типы и «физический» смысл
→ информация о возвращаемых значениях
→ какие ошибки возбуждаются
→ заметки
→ что рекомендуется почитать
→ предупреждения
Примеры однострочного и многострочного докстринга ищите в карточках!
✅ SPHINX
Последнее, про что мы хотим рассказать - Sphinx. В сущности, это те же многострочные докстринги, просто организованные по некоторым правилам. Этакий общепринятый эталон.
Этот стиль является стандартом в Python.
‼️Основные ключевые слова Sphinx:
→
param и type: значение параметра и тип его переменной→
return и rtype: возвращаемое значение и его тип→
:raises: описывает любые ошибки, которые возникают в коде→
.. seealso::: информация для дальнейшего чтения→
.. notes::: добавление заметки→
.. warning::: добавление предупрежденияОбщая структура документации Sphinx подробно расписана, как вы уже поняли, в карточках 😉
Пользоваться документацией Sphinx в повседневной жизни очень просто.
✅ В IDE PyCharm от JetBrains это идет по умолчанию - достаточно начать писать докстринг и нажать Enter.
✅ Чтобы использовать Sphinx в VS Code, сделайте так:
1. Установите расширение Python Docstring Generator
2. Как только вы начнете набирать докстринг, IDE предложит вам Generate Docstring. По умолчанию генерируется Sphinx. Поменять тип можно в настройках расширения
👍2