Python RU
12.5K subscribers
1.02K photos
96 videos
40 files
1.27K links
Все для python разработчиков

админ - @haarrp

@python_job_interview - Python собеседования

@ai_machinelearning_big_data - машинное обучение

@itchannels_telegram - 🔥лучшие ит-каналы

@programming_books_it - it книги

@pythonl

РКН: clck.ru/3Fmy2j
Download Telegram
⚡️ Python иногда умеет выглядеть как тёмная магия.

Вот однострочный quicksort через lambda:


q = lambda x: x and q([i for i in x[1:] if i <= x[0]]) + [x[0]] + q([i for i in x[1:] if i > x[0]])


Что тут происходит:

* берём первый элемент как pivot
* всё, что меньше или равно ему, рекурсивно сортируем слева
* сам pivot ставим в центр
* всё, что больше, рекурсивно сортируем справа
* если список пустой, возвращается пустой список

Работает красиво, но в продакшен так писать не надо. Это скорее пример того, насколько гибким может быть Python, чем нормальный стиль кода.

Минусы очевидные: плохая читаемость, рекурсия, лишние списки на каждом шаге и риск упереться в лимит рекурсии.

Но как демонстрация идеи quicksort в одну строку — выглядит эффектно.
Please open Telegram to view this post
VIEW IN TELEGRAM
👎3👍2