однострочники пайтон. Однострочники Python лаконичный и содержательный код by Кристи. Однострочники
Скачать 4.44 Mb.
|
К Р И С Т И А Н М А Й Е Р 2022 Л А К О Н И Ч Н Ы Й И С О Д Е Р Ж А Т Е Л Ь Н Ы Й К О Д ОДНОСТРОЧНИКИ PYTHON ББК 32.973.2-018.1 УДК 004.43 М14 Майер Кристиан М14 Однострочники Python: лаконичный и содержательный код. — СПб.: Питер, 2022. — 256 с.: ил. — (Серия «Библиотека программиста»). ISBN 978-5-4461-2966-9 Краткость — сестра программиста. Эта книга научит вас читать и писать лаконичные и функ- циональные однострочники. Вы сможете системно разбирать и понимать код на Python, а также писать выразительно и компактно, как настоящий эксперт. Здесь вы найдете приемы и хитрости написания кода, регулярные выражения, примеры ис- пользования однострочников в различных сферах, а также полезные алгоритмы. Подробные пояснения касаются в том числе и важнейших понятий computer science, что поможет вашему росту в программировании и аналитике. 16+ (В соответствии с Федеральным законом от 29 декабря 2010 г. № 436-ФЗ.) ББК 32.973.2-018.1 УДК 004.43 Права на издание получены по соглашению с No Starch Press. Все права защищены. Никакая часть данной книги не может быть воспроизведена в какой бы то ни было форме без письменного разрешения владельцев авторских прав. Информация, содержащаяся в данной книге, получена из источников, рассматриваемых издательством как надежные. Тем не менее, имея в виду возможные человеческие или технические ошибки, издательство не может гарантировать абсолютную точность и полноту приводимых сведений и не несет ответственности за возможные ошибки, связанные с использованием книги. Издательство не несет ответственности за доступ- ность материалов, ссылки на которые вы можете найти в этой книге. На момент подготовки книги к изданию все ссылки на интернет-ресурсы были действующими. ISBN 978-1718500501 англ. © 2020 by Christian Mayer. Python One-Liners: Write Concise, Eloquent Python Like a Professional, ISBN 9781718500501, published by No Starch Press Inc. 245 8th Street, San Francisco, California United States 94103 ISBN 978-5-4461-2966-9 © Перевод на русский язык ООО Издательство «Питер», 2022 © Издание на русском языке, оформление ООО Издательство «Питер», 2022 © Серия «Библиотека программиста», 2022 Оглавление Об авторе ..........................................................................................10 О научном редакторе ................................................................................................11 Благодарности .................................................................................. 12 Введение ........................................................................................... 14 Пример однострочника Python...............................................................................15 Примечание относительно удобочитаемости ..................................................16 Для кого эта книга ..................................................................................................... 17 Чему книга вас научит..............................................................................................18 Источники дополнительной информации в интернете ................................. 19 От издательства ......................................................................................................... 20 Глава 1. Краткая памятка по Python .......................................................................21 Основные структуры данных .................................................................................. 21 Контейнерные структуры данных ........................................................................ 27 Управляющие конструкции ...................................................................................... 35 Функции .........................................................................................................................38 Лямбда-функции ......................................................................................................... 39 Итоги главы .................................................................................................................. 39 Глава 2. Трюки Python ...................................................................................................41 Поиск самых высокооплачиваемых работников с помощью спискового включения ...............................................................................................42 6 Оглавление Поиск информативных слов с помощью спискового включения ..............45 Чтение файла ...............................................................................................................47 Лямбда-функции и функция map .........................................................................49 Извлечение окружения вхождений подстрок с помощью срезов ............ 52 Сочетание спискового включения и срезов .....................................................56 Исправление испорченных списков с помощью присваивания срезам ................................................................................................58 Анализ данных о сердечной деятельности с помощью конкатенации списков ...............................................................................................61 Поиск компаний, платящих меньше минимальной зарплаты, с помощью выражений-генераторов ...................................................................64 Форматирование баз данных с помощью функции zi p() ...........................66 Итоги главы .................................................................................................................. 69 Глава 3. Наука о данных .............................................................................................71 Простейшие операции с двумерными массивами ........................................ 72 Работа с массивами NumPy: срезы, транслирование и типы массивов ......................................................................................................... 77 Обнаружение аномальных значений с помощью условного поиска по массиву, фильтрации и транслирования ......................................86 Фильтрация двумерных массивов с помощью булева доступа по индексу ..................................................................................................................... 91 Очистка каждого i-го элемента массива с помощью транслирования, присваивания срезу и изменения формы .......................94 Когда использовать в NumPy функцию sort(), а когда — argsort() ........ 99 Создание расширенных фильтров массивов с помощью статистических показателей, а также математических и логических операций .......................................................................................... 106 Простейший анализ ассоциаций: купившие товар X покупают и товар Y ...................................................................................................................... 112 Поиск лучше всего продающихся наборов с помощью промежуточного анализа ассоциаций .............................................................. 115 Итоги главы ................................................................................................................. 118 Оглавление 7 Глава 4. Машинное обучение ................................................................................. 120 Основы машинного обучения с учителем ...................................................... 120 Линейная регрессия ................................................................................................. 122 Логистическая регрессия в одной строке ....................................................... 130 Кластеризация методом k-средних в одной строке кода ........................ 137 Метод k-ближайших соседей в одной строке кода .................................... 143 Нейросетевой анализ в одной строке кода ................................................... 148 Машинное обучение с помощью деревьев принятия решений в одной строке кода ............................................................................................... 158 Получение строки с минимальной дисперсией в одной строке кода ................................................................................................................. 161 Основные статистические показатели с помощью одной строки кода ................................................................................................................ 165 Классификация путем метода опорных векторов с помощью одной строки кода ................................................................................................... 169 Классификация с помощью случайных лесов в одной строке кода ................................................................................................................ 173 Итоги главы ................................................................................................................ 178 Глава 5. Регулярные выражения ............................................................................. 179 Поиск простых комбинаций символов в строковых значениях .............. 179 Создание вашего первого веб-скрапера с помощью регулярных выражений ................................................................................................................... 184 Анализ гиперссылок HTML-документов ........................................................... 188 Выделение сумм в долларах из строковых значений................................ 192 Поиск небезопасных HTTP URL ............................................................................ 195 Проверка формата времени во вводимых пользователем данных, часть 1 ........................................................................................................................... 198 Проверка формата времени во вводимых пользователем данных, часть 2 ......................................................................................................................... 200 Поиск удвоенных символов в строковых значениях ...................................202 Поиск повторов слов .............................................................................................. 205 8 Оглавление Модификация задаваемых регулярными выражениями шаблонов в многострочном строковом значении ...........................................................207 Итоги главы ................................................................................................................209 Глава 6. Алгоритмы .................................................................................................... 210 Поиск анаграмм с помощью лямбда-функций и сортировки ................. 212 Поиск палиндромов с помощью лямбда-функций и негативных срезов ........................................................................................................................... 214 Подсчет количества перестановок с помощью рекурсивных функций вычисления факториалов..................................................................... 216 Вычисление расстояния Левенштейна ..............................................................220 Вычисление булеана с помощью функционального программирования ..................................................................................................225 Реализация шифра Цезаря с помощью расширенного доступа по индексу и спискового включения .................................................................229 Поиск простых чисел с помощью решета Эратосфена .............................232 Вычисление последовательности Фибоначчи с помощью функции reduce() ..................................................................................................... 240 Рекурсивный алгоритм бинарного поиска ..................................................... 242 Рекурсивный алгоритм быстрой сортировки ................................................. 246 Итоги главы ............................................................................................................... 249 Послесловие ....................................................................................250 Моей жене Анне Об авторе Кристиан Майер (Christian Mayer) — кандидат компьютерных наук (computer science) и создатель популярного сайта https://blog.finxter.com/ , посвященного языку Python, автор почтовой рассылки о Python, насчиты- вающей более 20 000 активных подписчиков. Его обучающие материалы помогают десяткам тысяч студентов совершенствовать навыки написания кода, а также вести бизнес в интернете. Кроме того, Кристиан — автор серии самиздатовских книг Coffee Break Python. О научном редакторе Даниэль Зингаро (Daniel Zingaro) — доцент кафедры компьютерных наук и преподаватель Университета Торонто, удостоенный нескольких наград. Основная сфера научных интересов Даниэля — обучение компьютерным наукам. Он автор книги Algorithmic Thinking (издательство No Starch Press). Благодарности Для этого мира важнее не количество книг, а их качество. Я бесконечно бла- годарен сотрудникам издательства No Starch Press, которые во всем следуют данной философии. Эта книга — результат сотен часов их усердной работы, бесценных советов и конструктивных замечаний. Моя глубокая благодар- ность команде No Starch Press, сделавшей написание книг столь приятным занятием. В частности, я хотел бы поблагодарить Билла Поллока (Bill Pollock), кото- рый предложил мне написать эту книгу: он вдохновил меня и рассказал все об издательском деле. Я очень благодарен моему замечательному редактору Лиз Чедвик (Liz Chadwick), которая готовила рукопись к печати и искусно, настойчиво и изящ но придала моим наброскам намного более удобочитаемый вид. Именно благодаря ее помощи книга достигла того уровня ясности изложе- ния, который казался мне изначально недостижимым. Хотел бы выразить признательность Алекс Фрид (Alex Freed) за неустан- ное стремление повысить качество текста. Для меня было честью работать с таким талантливым редактором. Благодарю и моего выпускающего редактора Жанель Людовайз (Janelle Ludowise), которая с энтузиазмом и позитивным настроем доводила эту книгу до совершенства. Спасибо, Жанель. Огромное спасибо также Касси Андреадис (Kassie Andreadis). Особая благодарность профессору Даниэлю Зингаро (Daniel Zingaro), не пожалевшему изрядной толики своего времени для устранения всех неточ- ностей в этой книге. Кроме того, благодаря множеству его ценных замечаний изложение в ней обрело ясность. Без его усилий она не только была бы полна Благодарности 13 ошибок, но и читалась бы намного тяжелее. В то же время все оставшиеся ошибки — исключительно на моей совести. Мой научный руководитель профессор Розермель также косвенно поуча- ствовал в написании этой книги, посвятив немало своего времени, умений и усилий обучению меня компьютерным наукам. Я очень благодарен и при- знателен ему. Огромное спасибо моей прекрасной жене Анне Альтимире, внимательно вы- слушивающей, поощряющей и поддерживающей даже самые сумасшедшие мои идеи. Я благодарен также моим детям, Амалии и Гэбриелу, вдохновля- ющим меня своей любознательностью. Наконец, наибольшим источником мотивации для меня стали активные участники сообщества Finxter. Прежде всего книга предназначена для амбициозных программистов вроде вас, желающих улучшить навыки на- писания кода и решить какие-либо практические задачи в реальном мире. После долгих дней работы было так приятно получать письма от участников Finxter с благодарностями, вдохновлявшими меня на написание дальнейших частей книги. Введение Данная книга поможет вам стать настоящим экспертом по языку Python. Для этого мы сосредоточимся на написании однострочников: лаконичных, удобных программ, занимающих всего одну строку кода на Python. Благо- даря им вы сможете писать и читать код на Python быстрее и лучше раз- беретесь в этом языке. Кроме того, я насчитал еще пять причин, по которым однострочники Python помогут вам повысить эффективность работы и заслуживают изучения. Во-первых, совершенствуя свои базовые навыки работы с языком Python, вы сможете побороть множество мешающих вам мелких недостатков, при- сущих многим программистам. Не имея досконального понимания основ, сложно двигаться дальше. Отдельные строки кода — основные «кирпичики» любой программы. Понимание этих «кирпичиков» помогает не растеряться и по-настоящему овладеть более сложными концепциями. Во-вторых, вы научитесь использовать на все 100 % чрезвычайно популяр- ные библиотеки Python, например, предназначенные для науки о данных (data science) и машинного обучения. Эта книга состоит из шести глав, посвященных различным аспектам Python, от регулярных выражений до машинного обучения. Подобный подход позволяет рассмотреть широкий диапазон возможных приложений Python, а также научить читателя ис- пользовать богатые возможности этих библиотек. В-третьих, вы научитесь писать код в стиле Python. Начинающие про- граммисты на Python, особенно работавшие ранее с другими языками про- граммирования, зачастую пишут код в несвойственном Python стиле. Мы рассмотрим такие присущие Python понятия, как списковое включение, множественное присваивание и срезы. Вы научитесь писать удобочитаемый код, который сможете использовать совместно с другими программистами, работающими в этой сфере. Пример однострочника Python 15 В-четвертых, изучение однострочников Python придает мысли ясность и ла- коничность. Когда на счету каждый символ, нет места маловразумительному и бессистемному написанию кода. В-пятых, новые навыки написания однострочников дадут вам возможность разобраться в переусложненных базах кода Python, а также произвести впе- чатление как на друзей, так и на будущих работодателей при собеседовании. Решать сложные программистские задачи с помощью одной строки кода интересно. И вы не одиноки: онлайн-сообщество энтузиастов Python посто- янно соревнуется, кто создаст самые лаконичные и близкие стилю Python решения разнообразных практических (и не совсем практических) задач. |