Расширяем свои знания в Python с помощью совместного материала с Selectel.
В новых карточках собрали 7 способов использовать функцию zip в Python.
Эта функция создает несколько кортежей из элементов коллекций, которые были ей переданы. Сегодня подробно рассмотрим, как обрабатывать коллекции разной длины, создавать словари и даже транспонировать матрицы с помощью zip.
В новых карточках собрали 7 способов использовать функцию zip в Python.
Эта функция создает несколько кортежей из элементов коллекций, которые были ей переданы. Сегодня подробно рассмотрим, как обрабатывать коллекции разной длины, создавать словари и даже транспонировать матрицы с помощью zip.
🔥19👍6😢1
🔥 Сортировка в Python - не все так просто
Часто возникает потребность отсортировать список. Многие используют для этого метод
1. In-place сортировка
Метод
Если вы попробуете отсортировать составной список, то вы получите ошибку. Например:
3. Кастомная сортировка
Хотите написать гибкий «сортер»? Для начала определите правило сортировки.
Несколько примеров таких правил:
* Сортируем по длине каждого элемента (число - длина 1, список - определяем длину списка)
* Если элемент простой (например, число), то берем его строковое отображение. Если элемент составной (например, список), то берем строковое отображение первого элемента
* Каждый элемент отображаем в виде строки и сортируем в лексикографическом порядке
* Сортируем по типам и по-отдельности для каждого типа данных
Пример реализации последнего подхода:
- - - - -
► Задачки по Python и не только: IT Resume
Часто возникает потребность отсортировать список. Многие используют для этого метод
sort:arr = [1, 3, 2]Но с этим методом не все так просто 😕
arr.sort()
print(arr)
# [1, 2, 3]
1. In-place сортировка
Метод
sort выполняет сортировку in-place. Другими словами, вы получаете не новый отсортированный список, а измененный исходный. Сам по себе метод возвращает None. По очевидным причинам, это не всегда удобно. arr = [1, 3, 2]2. Сортировка составного списка
print(arr.sort())
# None
print(arr)
# [1, 2, 3]
Если вы попробуете отсортировать составной список, то вы получите ошибку. Например:
arr = ['s', 'p', [[1], [2, 3]], 'isok', 2]Это вполне логично, потому что как сравнить строку и список - совершенно непонятно. Поэтому метод sort в таких ситуациях нам не поможет.
# TypeError: '<' not supported between instances of 'list' and 'str'
3. Кастомная сортировка
Хотите написать гибкий «сортер»? Для начала определите правило сортировки.
Несколько примеров таких правил:
* Сортируем по длине каждого элемента (число - длина 1, список - определяем длину списка)
* Если элемент простой (например, число), то берем его строковое отображение. Если элемент составной (например, список), то берем строковое отображение первого элемента
* Каждый элемент отображаем в виде строки и сортируем в лексикографическом порядке
* Сортируем по типам и по-отдельности для каждого типа данных
Пример реализации последнего подхода:
arr = ['s', 'p', [1], [2, 3], 'isok', 2]Здесь уже все зависит от вашей фантазии и навыков программирования 😉
# создаем словарь, разбивая все по типам данных
res = {}
for el in arr:
el_type = type(el)
if el_type not in res:
res[el_type] = []
res[el_type].append(el)
# сортируем для каждого типа отдельно
for k, v in res.items():
res[k] = sorted(v)
# формируем итоговый список
res = [el for subarr in res.values() for el in subarr]
print(res)
# ['isok', 'p', 's', [1], [2, 3], 2]
- - - - -
► Задачки по Python и не только: IT Resume
🔥11👍2
7 ошибок в коде на Python, которые flake8 вам точно подсветит 😢
Предлагаем простое упражнение: откройте любой свой код, запустите линтер (flake8) и посмотрите - какие ошибки он вам покажет. Уверены, что в большинстве случаев вы встретите 7 ошибок, описанных ниже.
Если вдруг ваш код уже вычищен, прошел code review и готов к продакшену - то просто откройте другой код :)
* trailing whitespace
Если ваша строка заканчивается не переносом строки, а пробелом - линтер вам об этом скажет.
* expected 2 blank lines, found 0
Отделили класс от другого кода не двумя строками, а одной? Непорядок.
* unexpected spaces around keyword / parameter equals
Если вы указываете аргументы по умолчанию, то вокруг знака = не должно быть пробелов.
* line too long (107 > 79 characters)
Наверняка у вас есть слишком длинные строки. Комментарии, длинные лямбда-выражения или много аргументов в функции. Flake8 вам об этом незамедлительно сообщит.
* blank line contains whitespace
Иногда в пустые строки, отделяющие части кода друг от друга, закрадываются лишние пробелы. Мелочь, но и это тоже будет подсвечено.
* block comment should start with '# '
Если вы написали однострочный комментарий - не забудьте поставить пробел после #.
* too many blank lines (3)
Все мы любим добавлять "воздуха" в код, чтобы отделять блоки друг от друга. Однако, это не всегда соответствует правилам - будьте осторожней.
Итог
Всегда ли нужно исправлять эти ошибки? Не всегда. Главное - подходить с умом и не игнорировать замечания линтера, если они действительно имеют смысл.
Кстати - хотите больше интересных материалов про code review, статический анализ и линтеры? 😏
- - - - - - - - - - -
► Тест на знание PEP8 и правил оформления кода: IT Resume
Предлагаем простое упражнение: откройте любой свой код, запустите линтер (flake8) и посмотрите - какие ошибки он вам покажет. Уверены, что в большинстве случаев вы встретите 7 ошибок, описанных ниже.
Если вдруг ваш код уже вычищен, прошел code review и готов к продакшену - то просто откройте другой код :)
* trailing whitespace
Если ваша строка заканчивается не переносом строки, а пробелом - линтер вам об этом скажет.
* expected 2 blank lines, found 0
Отделили класс от другого кода не двумя строками, а одной? Непорядок.
* unexpected spaces around keyword / parameter equals
Если вы указываете аргументы по умолчанию, то вокруг знака = не должно быть пробелов.
* line too long (107 > 79 characters)
Наверняка у вас есть слишком длинные строки. Комментарии, длинные лямбда-выражения или много аргументов в функции. Flake8 вам об этом незамедлительно сообщит.
* blank line contains whitespace
Иногда в пустые строки, отделяющие части кода друг от друга, закрадываются лишние пробелы. Мелочь, но и это тоже будет подсвечено.
* block comment should start with '# '
Если вы написали однострочный комментарий - не забудьте поставить пробел после #.
* too many blank lines (3)
Все мы любим добавлять "воздуха" в код, чтобы отделять блоки друг от друга. Однако, это не всегда соответствует правилам - будьте осторожней.
Итог
Всегда ли нужно исправлять эти ошибки? Не всегда. Главное - подходить с умом и не игнорировать замечания линтера, если они действительно имеют смысл.
Кстати - хотите больше интересных материалов про code review, статический анализ и линтеры? 😏
- - - - - - - - - - -
► Тест на знание PEP8 и правил оформления кода: IT Resume
👍5🔥2
🔥 Почему COALESCE в SQL - это важно?
Пример:
* Ситуация 1
Вы делаете email-рассылку по базе клиентов. У некоторых в поле fio стоит пропуск - таким людям придет письмо:
Вы делаете аналитику по товарам и используете функцию
Подробно разобрали
- - - - - - - - - -
► Подборка интересных задач по SQL: IT Resume
COALESCE - это функция, которая вычисляет по порядку каждый из своих аргументов и на выходе возвращает значение первого аргумента, который был не NULL.Пример:
SELECT COALESCE(NULL, NULL, 1, NULL)Применяется ли это на практике? Конечно! Рассмотрим 2 ситуации:
# 1
* Ситуация 1
Вы делаете email-рассылку по базе клиентов. У некоторых в поле fio стоит пропуск - таким людям придет письмо:
Добрый день, !
Несолидно, согласитесь? С помощью COALESCE эта проблема решилась бы элементарно:COALESCE(fio, 'дорогой друг')* Ситуация 2
# Добрый день, дорогой друг!
Вы делаете аналитику по товарам и используете функцию
COUNT(col). На основании вашего отчета начальство потом принимает важные решения. Но вы-то забыли, что COUNT(col) проигнорирует значения NULL...Подробно разобрали
COALESCE и что у нее под капотом в нашей статье 👉🏻 Синтаксический сахар SQL: функция COALESCE. - - - - - - - - - -
► Подборка интересных задач по SQL: IT Resume
🔥10👍3
🔥 Вакансия Python/Go Developer (Middle/Senior) в Akvelon
Наши друзья из Akvelon прислали свежую вакансию для питонистов. Выглядит соблазнительно 😏
Вилка: от 2500$ до 3700$
Опыт: от 3+ лет
Английский язык В1-В2+
Релокация с оф.трудоустройством в Сербии, Польше, Грузии или Армении.
Занятость: full-time, офис
Требования:
* Опыт работы с Go, Python, Scala, Java
* Знание GraphQL, REST, HTTP и возможности разработки поддерживаемых API
* Опыт разработки и внедрения производительных, стабильных и удобных в сопровождении интерфейсов API
Для отклика просто нажмите кнопку 👇🏻
Наши друзья из Akvelon прислали свежую вакансию для питонистов. Выглядит соблазнительно 😏
Вилка: от 2500$ до 3700$
Опыт: от 3+ лет
Английский язык В1-В2+
Релокация с оф.трудоустройством в Сербии, Польше, Грузии или Армении.
Занятость: full-time, офис
Требования:
* Опыт работы с Go, Python, Scala, Java
* Знание GraphQL, REST, HTTP и возможности разработки поддерживаемых API
* Опыт разработки и внедрения производительных, стабильных и удобных в сопровождении интерфейсов API
Для отклика просто нажмите кнопку 👇🏻
👍3
🔥 Как конвертировать строку в число на Python?
Частенько возникает ситуация, что число вам подается на вход в виде строки (например, при загрузке данных из файлов). Особенно больно, когда речь не о целых числах, а о дробных.
И как конвертировать такую строку в число? И как проверить - поддается ли вообще строка конвертации в
Чистый isdigit() нам не поможет
Скорее всего, многие сразу подумали про функцию
Однако, мы можем это обойти, добавив при проверке
Другой вариант (пожалуй, самый очевидный) - завернуть нашу конвертацию из
Регулярные выражения
Для любителей писать регулярные выражения, можно пойти и по такому пути 🙂
Заключение
Есть и другие варианты - например, с помощью
- - - - - - -
► Задача про максимальное число из 6 и 9: IT Resume
Частенько возникает ситуация, что число вам подается на вход в виде строки (например, при загрузке данных из файлов). Особенно больно, когда речь не о целых числах, а о дробных.
И как конвертировать такую строку в число? И как проверить - поддается ли вообще строка конвертации в
float? Давайте разберем по шагам. Чистый isdigit() нам не поможет
Скорее всего, многие сразу подумали про функцию
isdigit. Все бы хорошо, но она выдаст True, только если ВСЕ символы в строке - числа. А в случае с float у нас есть дробный разделитель (например, точка). Однако, мы можем это обойти, добавив при проверке
replace:def check(num, sep='.'):То есть убираем первый разделитель и проверяем - получили мы число или нет. Если получили - значит это
return num.replace(sep, '', 1).isdigit()
float и его можно беспрепятственно конвертировать:def convert(num, sep='.'):Что насчет try-except?
if num.replace(sep, '', 1).isdigit():
return float(num)
return num
Другой вариант (пожалуй, самый очевидный) - завернуть нашу конвертацию из
str в float в блок try-except. Получилось - здорово; не получилось - не и ладно. def convert(num):Не сказал бы, что это самое красивое решение - но почему бы и нет.
try:
num = float(num)
return num
except ValueError:
return num
Регулярные выражения
Для любителей писать регулярные выражения, можно пойти и по такому пути 🙂
import reЭтот вариант на любителя, но почему нет.
def convert(num):
if re.match(r'^-?\d+(?:\.\d+)$', num) is None:
return num
return float(num)
Заключение
Есть и другие варианты - например, с помощью
list comprehension + функции all. А как вы бы решили задачу? 😉- - - - - - -
► Задача про максимальное число из 6 и 9: IT Resume
🔥7👍1
🔥 Топовая программа для работы с разными БД
«Какой софт использовать для работы с базой данных» - наверняка такой вопрос уже возникал у вас. Вот мы всей командой используем DBeaver. Почему - рассказываем ниже.
1. Кроссплатформенный. У нас есть люди с Windows, с MACos и даже с Linux. И на все ОС DBeaver встает без проблем.
2. Поддержка основных СУБД. Нам не приходится использовать для MySQL - одну программу, для PostgreSQL - другую, а для SQL Server - третью. Все подключения удобно настраиваются в одном месте.
3. Бесплатный. Это немаловажный фактор - если вам не хочется платить за условный DataGrip, то DBeaver - отличная альтернатива.
4. Удобный. В отличие от многих подобных программ, DBeaver довольно удобен в плане интерфейса - все интуитивно понятно расположено и находится под рукой. Хотя свои косяки у него тоже есть, глупо это отрицать.
Конечно, Heidi, Toad, Workbench, PgAdmin, DataGrip и другие программы никто не отменял. Но мы плотно сидим на DBeaver. А что вы используете? 😉
- - - - - - -
► Тест по SQL для продвинутых: IT Resume
«Какой софт использовать для работы с базой данных» - наверняка такой вопрос уже возникал у вас. Вот мы всей командой используем DBeaver. Почему - рассказываем ниже.
1. Кроссплатформенный. У нас есть люди с Windows, с MACos и даже с Linux. И на все ОС DBeaver встает без проблем.
2. Поддержка основных СУБД. Нам не приходится использовать для MySQL - одну программу, для PostgreSQL - другую, а для SQL Server - третью. Все подключения удобно настраиваются в одном месте.
3. Бесплатный. Это немаловажный фактор - если вам не хочется платить за условный DataGrip, то DBeaver - отличная альтернатива.
4. Удобный. В отличие от многих подобных программ, DBeaver довольно удобен в плане интерфейса - все интуитивно понятно расположено и находится под рукой. Хотя свои косяки у него тоже есть, глупо это отрицать.
Конечно, Heidi, Toad, Workbench, PgAdmin, DataGrip и другие программы никто не отменял. Но мы плотно сидим на DBeaver. А что вы используете? 😉
- - - - - - -
► Тест по SQL для продвинутых: IT Resume
🔥11👍2
Вопрос от подписчика. Что мне нужно знать?
Вопрос
Я заканчиваю обучение на онлайн-курсах по Python и хочу устроиться на работу. Что мне нужно знать, чтобы быть востребованным?
Ответ
Тут зависит от специальности. Если речь о бекенд-разработке, то минимальный набор знаний такой:
* Базовый Python. Например, уметь написать сложный вложенный цикл-обработчик, а потом его же оптимизировать.
* Один из бэкенд-фреймворков. Например, Django или Flask.
* Умение работать и создавать API. Хотя бы базовый REST.
* Понимание http-запросов. GET, POST, корсы, коды ошибок и прочее.
* Git. Минимальный набор -
* SQL. Уметь писать базовые
* Linux. Подключение, перемещение по каталогам, понимание пользователей, установка-удаление-обновление пакетов/python/библиотек, полезные утилитки типа htop.
* Владеть базовыми инструментами для работы. Например, VS Code, DBeaver, Postman, putty.
* Python-специфичные плюшки. Виртуальное окружение,
* Тестирование кода с
* Понимание процесса деплоя. Хорошо бы уметь в базовый докер, знать про
Много? Много. Но и это не все.
Вообще, все знать не обязательно и невозможно. Но иметь общее представление и использовать на практике - нужно.
И самое важное: нужен пет-проджект, чтобы показать на собеседовании, да и вообще просто для «обучения на практике». Не учебный проект, не блог, сделанный по статье на Хабре. А нормальный проект, покрытый тестами, задеплоенный где-нибудь на хостинге, с красиво оформленным репозиторием и вылизанным кодом.
Возьмут ли вас на работу после этого? Скорее да, чем нет 😉
- - - - -
► Задачки по Python и не только: IT Resume
Вопрос
Я заканчиваю обучение на онлайн-курсах по Python и хочу устроиться на работу. Что мне нужно знать, чтобы быть востребованным?
Ответ
Тут зависит от специальности. Если речь о бекенд-разработке, то минимальный набор знаний такой:
* Базовый Python. Например, уметь написать сложный вложенный цикл-обработчик, а потом его же оптимизировать.
* Один из бэкенд-фреймворков. Например, Django или Flask.
* Умение работать и создавать API. Хотя бы базовый REST.
* Понимание http-запросов. GET, POST, корсы, коды ошибок и прочее.
* Git. Минимальный набор -
clone, push, pull, merge.* SQL. Уметь писать базовые
SELECT, UDPATE, INSERT, DELETE запросы.* Linux. Подключение, перемещение по каталогам, понимание пользователей, установка-удаление-обновление пакетов/python/библиотек, полезные утилитки типа htop.
* Владеть базовыми инструментами для работы. Например, VS Code, DBeaver, Postman, putty.
* Python-специфичные плюшки. Виртуальное окружение,
pip freeze и прочее.* Тестирование кода с
pytest или другим фреймворком.* Понимание процесса деплоя. Хорошо бы уметь в базовый докер, знать про
nginx и условный screen.Много? Много. Но и это не все.
Вообще, все знать не обязательно и невозможно. Но иметь общее представление и использовать на практике - нужно.
И самое важное: нужен пет-проджект, чтобы показать на собеседовании, да и вообще просто для «обучения на практике». Не учебный проект, не блог, сделанный по статье на Хабре. А нормальный проект, покрытый тестами, задеплоенный где-нибудь на хостинге, с красиво оформленным репозиторием и вылизанным кодом.
Возьмут ли вас на работу после этого? Скорее да, чем нет 😉
- - - - -
► Задачки по Python и не только: IT Resume
👍9😱2
🔥 Расчет промежуточного итога - Excel vs SQL
Расчет промежуточного итога - очень распространенная задача. Но в то же время, очень непростая.
Сегодня вместе с онлайн-университетом SF Education собрали для вас 2 способа расчета промежуточного итога:
с помощью Excel
с помощью оператора rollup в SQL
Забирайте себе в сохраненки - такая штука вам точно пригодится 😉
- - - - -
► Задачка: cделать из «широкой» таблицы «длинную»
Расчет промежуточного итога - очень распространенная задача. Но в то же время, очень непростая.
Сегодня вместе с онлайн-университетом SF Education собрали для вас 2 способа расчета промежуточного итога:
с помощью Excel
с помощью оператора rollup в SQL
Забирайте себе в сохраненки - такая штука вам точно пригодится 😉
- - - - -
► Задачка: cделать из «широкой» таблицы «длинную»
🔥11
Всем леопардам посвящается 🐆
Наш дружище, Глеб Михайлов, сделал курс Data Science с Глебом Михайловым. Кто воспользуется промокодом ITRESUME на 50% скидки - тот леопард 🐆
Кстати, в курсе куча практики на нашей платформе IT Resume, так что засучивайте рукава)))
А еще Глеб как-то делал стрим на нашей платформе. Все как обычно - с шутками, виноградным днем и диким угаром)) Если хочется поднять себе настроение - велкоме)
Наш дружище, Глеб Михайлов, сделал курс Data Science с Глебом Михайловым. Кто воспользуется промокодом ITRESUME на 50% скидки - тот леопард 🐆
Кстати, в курсе куча практики на нашей платформе IT Resume, так что засучивайте рукава)))
А еще Глеб как-то делал стрим на нашей платформе. Все как обычно - с шутками, виноградным днем и диким угаром)) Если хочется поднять себе настроение - велкоме)
🔥7👍2
Расскажите - какой контент вам интересен? 🙏🏻
Мы последнее время стали экспериментировать с форматом постов. Расскажите - что вам интересней читать и на что нам делать особенный упор. Ну и вообще - интересно ли вам нас читать😇
1. Разборы задач, вопросов и тестов с собеседований. Пример: Разбор тестового задания для аналитика от Авито
2. Подноготную мира IT - наши мысли о разработке и работе в команде, и немного о том, как мы пишем код. Пример: Что мне нужно знать, чтобы получить работу?
3. Подборки инструментов, сервисов, книг и других полезностей. Пример: Топовая программа для работы с БД
4. Разборы базовых конструкций языков программирования. Пример: Почему COALESCE - это важно?
5. Побольше информации о платформе IT Resume. Пример: CHANGELOG за февраль
6. Видео и стримы - лайвкодинги, разборы собеседований, ревью кода подписчиков
7. Другое (напишите в комментарии)
Мы последнее время стали экспериментировать с форматом постов. Расскажите - что вам интересней читать и на что нам делать особенный упор. Ну и вообще - интересно ли вам нас читать😇
1. Разборы задач, вопросов и тестов с собеседований. Пример: Разбор тестового задания для аналитика от Авито
2. Подноготную мира IT - наши мысли о разработке и работе в команде, и немного о том, как мы пишем код. Пример: Что мне нужно знать, чтобы получить работу?
3. Подборки инструментов, сервисов, книг и других полезностей. Пример: Топовая программа для работы с БД
4. Разборы базовых конструкций языков программирования. Пример: Почему COALESCE - это важно?
5. Побольше информации о платформе IT Resume. Пример: CHANGELOG за февраль
6. Видео и стримы - лайвкодинги, разборы собеседований, ревью кода подписчиков
7. Другое (напишите в комментарии)
👍1
Какой контент вам интересен?
Anonymous Poll
80%
Разборы задач, вопросов и тестов с собеседований
21%
Подноготная мира IT
37%
Подборки инструментов, сервисов, книг
30%
Разборы базовых конструкций ЯП
6%
Информация о платформе IT Resume
32%
Видео и стримы - лайвкодинги, разборы собеседований, ревью кода
4%
Другое
🔥 3 полезных функции для работы с Pandas
Pandas - сильнейший фреймворк для анализа данных в Python. И сегодня мы вместе с Анастасией из PyMagic (наверняка вы видели ее видео про Data Science на ютуб-канале miracl6) мы сделали небольшую подборку полезных функций Pandas:
✓ stack
✓ set\_option
✓ insert
Эти, казалось бы, несложные функции могут существенно облегчить вам ежедневную работу с Pandas 😉
Кстати, если у вас есть какие-то личные рекомендасьоны - поделитесь в комментариях)) Может быть вы облегчите кому-то жизнь 😄
Pandas - сильнейший фреймворк для анализа данных в Python. И сегодня мы вместе с Анастасией из PyMagic (наверняка вы видели ее видео про Data Science на ютуб-канале miracl6) мы сделали небольшую подборку полезных функций Pandas:
✓ stack
✓ set\_option
✓ insert
Эти, казалось бы, несложные функции могут существенно облегчить вам ежедневную работу с Pandas 😉
Кстати, если у вас есть какие-то личные рекомендасьоны - поделитесь в комментариях)) Может быть вы облегчите кому-то жизнь 😄
🔥15👍10