具体描述
本书专注于从初学迈向进阶的Python编码技术:如何像专家一样写出优雅、准确、简洁高效的Python单行代码;阅读任意一行Python代码时,如何系统性地对其进行拆解和分析。全书分为6个章节,以单行代码切入计算机科学的各个领域,包括Python语言基础、编程技巧、基于NumPy的科学计算、机器学习的主要算法模型、正则表达式进阶、计算机科学中若干经典算法的单行实现等。
作者简介
作者 | Christian Mayer
计算机科学博士,知名Python网站创始人和维护者。该网站非常活跃,订阅人数已经超过2万且仍在持续增长。他的网站不仅发展迅速,也帮助数以万计的学习者提升了编码技能和优化了在线业务。他同时也是Coffee Break Python系列自出版图书的作者。
译者 | 苏丹
网上id一般为su27,2009年毕业于北京师范大学数学系,主要从事后端编程,也曾从事前端与客户端开发工作。目前为豆瓣用户产品后端负责人,日常跟Python打交道较多。2016年翻译出版《深入理解Flask》一书。
目录信息
Python 一行流的例子 ................................................................................................... 2
关于可读性的说明 ....................................................................................................... 3
这本书是给谁看的? ................................................................................................... 4
你会学到什么? ........................................................................................................... 5
线上资源 ....................................................................................................................... 6
1 Python 温故知新 ................................................................................................ 7
基本数据结构 ............................................................................................................... 8
数值数据类型和结构 ........................................................................................... 8
布尔值 ................................................................................................................... 8
字符串 ................................................................................................................. 11
关键字 None ....................................................................................................... 12
容器数据类型 ............................................................................................................. 13
列表 ..................................................................................................................... 13
堆栈 ..................................................................................................................... 16
集合 ..................................................................................................................... 17
字典 ..................................................................................................................... 19
成员 ..................................................................................................................... 20
XVIII Python 一行流
列表和字典解析 ................................................................................................. 20
控制流 ......................................................................................................................... 21
if、else 和 elif ..................................................................................................... 21
循环 ..................................................................................................................... 22
函数 ............................................................................................................................. 24
lambda 函数 ................................................................................................................. 24
总结 ............................................................................................................................. 25
2 Python 技巧 ..................................................................................................... 27
使用列表解析找出最高收入者 .................................................................................. 28
基础背景 ............................................................................................................. 28
代码 ..................................................................................................................... 30
它是如何工作的 ................................................................................................. 31
使用列表解析找出高信息价值的单词 ...................................................................... 31
基础背景 ............................................................................................................. 31
代码 ..................................................................................................................... 32
它是怎么工作的 ................................................................................................. 32
读取文件 ..................................................................................................................... 33
基础背景 ............................................................................................................. 33
代码 ..................................................................................................................... 34
它是怎么工作的 ................................................................................................. 34
使用 lambda 和 map 函数 ........................................................................................... 35
基础背景 ............................................................................................................. 35
代码 ..................................................................................................................... 36
它是如何工作的 ................................................................................................. 37
使用切片查找匹配子串及所处环境 .......................................................................... 38
基础背景 ............................................................................................................. 38
代码 ..................................................................................................................... 40
它是如何工作的 ................................................................................................. 41
列表解析和切片 ......................................................................................................... 41
基础背景 ............................................................................................................. 42
代码 ..................................................................................................................... 42
它是如何工作的 ................................................................................................. 43
使用切片赋值来修复损坏的列表 .............................................................................. 43
基础背景 ............................................................................................................. 43
代码 ..................................................................................................................... 44
它是如何工作的 ................................................................................................. 45
使用列表连接分析心脏健康数据 .............................................................................. 46
基础背景 ............................................................................................................. 46
代码 ..................................................................................................................... 48
它是如何工作的 ................................................................................................. 48
使用生成器表达式查出未达最低工资标准的公司 .................................................. 48
基础背景 ............................................................................................................. 49
代码 ..................................................................................................................... 49
它是如何工作的 ................................................................................................. 50
使用 zip()函数格式化数据库 ..................................................................................... 51
基础背景 ............................................................................................................. 51
代码 ..................................................................................................................... 52
它是如何工作的 ................................................................................................. 53
总结 ............................................................................................................................. 54
3 数据科学 .......................................................................................................... 55
基础二维数组计算 ..................................................................................................... 56
基础背景 ............................................................................................................. 56
代码 ..................................................................................................................... 59
它是如何工作的 ................................................................................................. 60
使用 NumPy 数组:切片、广播和数组类型 ........................................................... 61
基础背景 ............................................................................................................. 61
广播 ..................................................................................................................... 64
代码 ..................................................................................................................... 67
它是如何工作的 ................................................................................................. 68
使用条件数组查询、过滤和广播检测异常值 .......................................................... 70
基础背景 ............................................................................................................. 70
代码 ..................................................................................................................... 71
它是如何工作的 ................................................................................................. 72
使用布尔索引过滤二维数组 ...................................................................................... 74
基础背景 ............................................................................................................. 74
代码 ..................................................................................................................... 75
它是如何工作的 ................................................................................................. 76
使用广播、切片赋值和重塑清洗固定步长的数组元素 .......................................... 77
基础背景 ............................................................................................................. 77
代码 ..................................................................................................................... 80
它是如何工作的 ................................................................................................. 81
NumPy 中何时使用 sort()函数,何时使用 argsort()函数 ........................................ 82
基础背景 ............................................................................................................. 82
代码 ..................................................................................................................... 85
它是如何工作的 ................................................................................................. 85
如何使用 lambda 函数和布尔索引来过滤数组 ........................................................ 87
基础背景 ............................................................................................................. 87
代码 ..................................................................................................................... 87
它是如何工作的 ................................................................................................. 88
如何使用统计、数学和逻辑来创建高级数组过滤器 .............................................. 89
基础背景 ............................................................................................................. 89
代码 ..................................................................................................................... 93
它是如何工作的 ................................................................................................. 94
简单的关联分析:买了 X 的人也买了 Y .............................................................. 94
基础背景 ............................................................................................................. 94
代码 ..................................................................................................................... 95
它是如何工作的 ................................................................................................. 96
使用中间关联分析寻找最佳捆绑策略 ...................................................................... 98
基础背景 ............................................................................................................. 98
代码 ..................................................................................................................... 98
它是怎么工作的 ................................................................................................. 99
总结 ........................................................................................................................... 100
4 机器学习 ........................................................................................................ 102
监督式机器学习的基础知识 .................................................................................... 102
训练阶段 ........................................................................................................... 103
推理阶段 ........................................................................................................... 104
线性回归 ................................................................................................................... 104
基础背景 ........................................................................................................... 104
代码 ................................................................................................................... 107
它是如何工作的 ............................................................................................... 108
逻辑回归的一行流 ................................................................................................... 110
基础背景 ........................................................................................................... 110
Sigmoid 函数 ................................................................................................... 111
代码 ................................................................................................................... 114
它是如何工作的 ............................................................................................... 114
K-Means 聚类算法一行流 ....................................................................................... 116
基础背景 ........................................................................................................... 116
代码 ................................................................................................................... 119
它是如何工作的 ............................................................................................... 120
K-近邻算法一行流 ................................................................................................... 122
基础背景 ........................................................................................................... 122
代码 ................................................................................................................... 124
它是如何工作的 ............................................................................................... 125
神经网络分析一行流 ............................................................................................... 127
XXII Python 一行流
基础背景 ........................................................................................................... 127
代码 ................................................................................................................... 132
它是如何工作的 ............................................................................................... 133
决策树学习一行流 ................................................................................................... 136
基础背景 ........................................................................................................... 136
代码 ................................................................................................................... 137
它是如何工作的 ............................................................................................... 138
一行流计算方差最小的数据行 ................................................................................ 139
基础背景 ........................................................................................................... 139
代码 ................................................................................................................... 140
它是如何工作的 ............................................................................................... 141
基本统计一行流 ....................................................................................................... 142
基础背景 ........................................................................................................... 143
代码 ................................................................................................................... 144
它是如何工作的 ............................................................................................... 145
支持向量机分类一行流............................................................................................ 146
基础背景 ........................................................................................................... 147
代码 ................................................................................................................... 148
它是如何工作的 ............................................................................................... 149
随机森林分类一行流 ............................................................................................... 150
基础背景 ........................................................................................................... 150
代码 ................................................................................................................... 152
它是如何工作的 ............................................................................................... 152
总结 ........................................................................................................................... 154
5 正则表达式 .................................................................................................... 155
在字符串中找到基本文本模式 ................................................................................ 155
基础背景 ........................................................................................................... 156
代码 ................................................................................................................... 159
它是如何工作的 ............................................................................................... 159
用正则表达式编写你的第一个网络爬虫 ................................................................ 160
基础背景 ........................................................................................................... 160
代码 ................................................................................................................... 162
它是如何工作的 ............................................................................................... 162
分析 HTML 文档中的超链接 .................................................................................. 163
基础背景 ........................................................................................................... 163
代码 ................................................................................................................... 165
它是如何工作的 ............................................................................................... 166
从字符串中提取美元金额 ........................................................................................ 167
基础背景 ........................................................................................................... 168
代码 ................................................................................................................... 169
它是如何工作的 ............................................................................................... 169
找出不安全的 HTTP URL ........................................................................................ 170
基础背景 ........................................................................................................... 170
代码 ................................................................................................................... 171
它是如何工作的 ............................................................................................... 171
验证用户输入的时间格式(第一部分) ................................................................ 172
基础背景 ........................................................................................................... 172
代码 ................................................................................................................... 173
它是如何工作的 ............................................................................................... 174
验证用户输入的时间格式(第二部分) ................................................................ 174
基础背景 ........................................................................................................... 175
代码 ................................................................................................................... 175
它是如何工作的 ............................................................................................... 176
字符串中的重复检测 ............................................................................................... 176
基础背景 ........................................................................................................... 176
代码 ................................................................................................................... 177
它是如何工作的 ............................................................................................... 178
检测重复单词 ........................................................................................................... 179
基础背景 ........................................................................................................... 179
代码 ................................................................................................................... 179
它是如何工作的 ............................................................................................... 180
用正则模式在多行字符串中进行修改 .................................................................... 181
基础背景 ........................................................................................................... 181
代码 ................................................................................................................... 181
它是如何工作的 ............................................................................................... 182
总结 ........................................................................................................................... 183
6 算法 ............................................................................................................... 184
用 lambda 函数及排序找出异形词 .......................................................................... 185
基础背景 ........................................................................................................... 185
代码 ................................................................................................................... 186
它是如何工作的 ............................................................................................... 187
用 lambda 函数和负索引切片找出回文 .................................................................. 188
基础背景 ........................................................................................................... 188
代码 ................................................................................................................... 189
它是如何工作的 ............................................................................................... 189
用递归阶乘函数计算排列数 .................................................................................... 189
基础背景 ........................................................................................................... 190
代码 ................................................................................................................... 192
它是如何工作的 ............................................................................................... 192
找到 Levenshtein 距离 .............................................................................................. 194
基础背景 ........................................................................................................... 194
代码 ................................................................................................................... 195
它是如何工作的 ............................................................................................... 195
通过函数式编程计算幂集 ........................................................................................ 198
基础背景 ........................................................................................................... 198
代码 ................................................................................................................... 200
它是如何工作的 ............................................................................................... 200
用高级索引和列表解析来实现恺撒密码的加密 .................................................... 201
基础背景 ........................................................................................................... 201
代码 ................................................................................................................... 202
它是如何工作的 ............................................................................................... 203
用 Eratosthenes 筛法找出素数 ................................................................................. 204
基础背景 ........................................................................................................... 204
代码 ................................................................................................................... 205
它是如何工作的 ............................................................................................... 206
用 reduce()函数计算 Fibonacci 数列 ........................................................................ 211
基础背景 ........................................................................................................... 211
代码 ................................................................................................................... 211
它是如何工作的 ............................................................................................... 212
一种递归的二分查找算法 ........................................................................................ 214
基础背景 ........................................................................................................... 214
代码 ................................................................................................................... 216
它是如何工作的 ............................................................................................... 216
递归快速排序算法 ................................................................................................... 217
基础背景 ........................................................................................................... 218
代码 ................................................................................................................... 219
它是如何工作的 ............................................................................................... 219
总结 ........................................................................................................................... 220
后记 .................................................................................................................... 221
· · · · · · (收起)
读后感
这本书作者是写了网站补充滴 [https://pythononeliners.com/] 官方仓库也给个口子 [https://github.com/finxter/PythonOneLiners] 机器学习,数据科学还有正则解析那些不能算一行流 这种归类有凑字数嫌疑哦 别太认真, 看得懂一行流和只写一行流 两种境界
这本书作者是写了网站补充滴 [https://pythononeliners.com/] 官方仓库也给个口子 [https://github.com/finxter/PythonOneLiners] 机器学习,数据科学还有正则解析那些不能算一行流 这种归类有凑字数嫌疑哦 别太认真, 看得懂一行流和只写一行流 两种境界
第一章 什么是一笔画 第二章 怎样一笔画小动物 第三章 怎样一笔画阿拉伯数字 第四章 怎样一笔画拉丁字母 第五章 怎样一笔画狂草汉字 第六章 怎样一笔画人物 本书的体例基本与此类似。 学写阿拉伯数字的同志们应该直接去学数字,学写字母的同志们应该直接去学...
第一章 什么是一笔画 第二章 怎样一笔画小动物 第三章 怎样一笔画阿拉伯数字 第四章 怎样一笔画拉丁字母 第五章 怎样一笔画狂草汉字 第六章 怎样一笔画人物 本书的体例基本与此类似。 学写阿拉伯数字的同志们应该直接去学数字,学写字母的同志们应该直接去学...
这本书作者是写了网站补充滴 [https://pythononeliners.com/] 官方仓库也给个口子 [https://github.com/finxter/PythonOneLiners] 机器学习,数据科学还有正则解析那些不能算一行流 这种归类有凑字数嫌疑哦 别太认真, 看得懂一行流和只写一行流 两种境界
用户评价
这本书简直是信息爆炸时代的一剂清凉剂。它没有那些故弄玄虚的理论堆砌,而是直击问题的核心,用最精炼的方式展示了解决复杂问题的优雅路径。我常常在深夜里沉浸其中,那种豁然开朗的感觉,就像是迷宫中突然出现了一束光。它不仅仅是教你如何写出更少的代码,更重要的是,它训练了你的思维模式,让你学会用一种更具“流体感”的方式去审视和重构你的逻辑。比如,当我面对一个需要多层嵌套循环才能完成的任务时,翻开书中的某个章节,我才意识到原来只需要一个巧妙的函数式表达,就能将整个结构扁平化,不仅可读性大大增强,运行效率也随之提升。这本书的排版和插图也做得非常到位,每一个示例代码块都像是精心雕琢的艺术品,让人不忍心跳过哪怕一个字符。它不是那种读完就束之高阁的工具书,而是会让你时不时地翻开,寻找新的灵感和启发,每一次重读,都能发现新的层次和含义。它彻底改变了我对“简洁即是力量”的理解,原来代码的优雅程度,真的可以和其内在的效率成正比。
对于有一定编程基础,但渴望突破“平庸”界限的开发者来说,这本书记载的智慧价值无可估量。它不是那种入门级的“Hello World”指南,而是面向中高级工程师的“内功心法”。我尤其欣赏作者在讲解复杂概念时所采用的类比手法,这些比喻非常贴切且富有画面感,瞬间打消了许多传统上被认为晦涩难懂的技术障碍。比如,书中关于装饰器链式调用的描述,那种层层递进、互相作用的机制,被解释得如同流水线上的精密操作,清晰明了。更重要的是,这本书强调的不仅仅是代码的“短”,更是代码的“韧性”。如何写出既能应对未来需求变化,又能在当前环境下保持高性能的代码,是贯穿全书的主线。它迫使你去思考,你写的每一行代码,是否都是必要的,是否达到了最佳的表达形式。读完之后,我感觉自己对Python的“道”有了更深一层的理解,而不仅仅是停留在“术”的层面。
这本书给我带来的冲击,更多是一种哲学层面的颠覆。我之前总觉得,写出高性能的程序,就得依赖C++或者Rust这类底层语言,Python在某些场景下总有性能上的妥协。然而,这本书用大量的实战案例证明了,在很多实际的业务场景中,通过精妙的Pythonic写法,完全可以将性能瓶颈转移到I/O或算法本身,而不是因为语言的特性。它像一把锋利的解剖刀,将那些拖慢程序运行的“冗余脂肪”毫不留情地切除。让我感到惊喜的是,书中对异步编程模型的阐述,也达到了一个新的高度。它没有简单地介绍`async/await`的语法糖,而是深入探讨了事件循环的工作机制,以及如何最大化并发效率。这种对底层原理的深刻把握,再结合到极简的代码实践中,形成了一种令人信服的说服力。这本书更像是一本修行手册,指引你如何去除杂念,专注于代码的本质美感与效率。
这本书的视角非常独特,它仿佛是用一个高倍显微镜,聚焦于Python语言中最具魔力的那些角落。我原本以为自己对Python的掌握已经 cukup 熟练了,但阅读这本书后,才发现自己一直停留在“能用”的层面,而这本书展示的是“如何用得登峰造极”。它并不侧重于介绍那些人尽皆知的标准库,而是深入挖掘了那些隐藏在深层API中的优化潜力,以及如何通过巧妙的组合来实现惊人的效果。其中关于生成器表达式和迭代器惰性求值的章节,尤其让我印象深刻。我过去常常为了处理大数据集而头疼内存问题,这本书提供的方法论,让我能够以近乎零内存占用的方式,流畅地处理百万级以上的数据流。它教会我,程序运行的本质,是资源的优化配置,而Python强大的抽象能力,正是实现这种优化的最佳武器。阅读体验是高度沉浸式的,作者的笔触非常自信且充满洞察力,绝无半点含糊不清之处。
这是一本让人读完后,会忍不住想立刻重构自己现有代码库的“魔典”。它的语言风格极为精炼,每一句话都饱含信息量,几乎没有废话。读这本书的过程,与其说是学习,不如说是一种思维的重塑。它不断地挑战你对Python既有认知的边界。例如,关于元编程和动态类型处理的部分,作者展示了一些教科书上不常提及的技巧,这些技巧能让你在不牺牲代码清晰度的情况下,实现非常底层的定制化控制。我发现自己开始下意识地在日常工作中寻找那些可以被“压缩”和“优化”的结构。它提供的不仅仅是技巧,更是一种对代码简洁和高效的近乎偏执的追求精神。这本书的价值在于,它将那些分散在各种官方文档和社区讨论中的“最佳实践”,提炼并整合成了系统化、可复制的方法论。对于任何想要将Python技能提升到艺术境界的程序员而言,这本书都是不可或缺的案头之宝。
#是也乎# ╮(╯▽╰)╭ 有幸写推荐序~ 可以认为是内卷艺术… 用一行代码表述出整个宇宙~ 焉不快哉?
one-liner 可读性很差,不建议
涵盖的范围比较广,3、4章数据科学和机器学习的部分有点枯燥,主要是对库的介绍。2、4、5章更贴近书名所说的技巧。
重要的不是one-liners, 而是pythonic
涵盖的范围比较广,3、4章数据科学和机器学习的部分有点枯燥,主要是对库的介绍。2、4、5章更贴近书名所说的技巧。