具体描述
本书专注于从初学迈向进阶的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
· · · · · · (收起)
读后感
第一章 什么是一笔画 第二章 怎样一笔画小动物 第三章 怎样一笔画阿拉伯数字 第四章 怎样一笔画拉丁字母 第五章 怎样一笔画狂草汉字 第六章 怎样一笔画人物 本书的体例基本与此类似。 学写阿拉伯数字的同志们应该直接去学数字,学写字母的同志们应该直接去学...
看到 [su27 老师]翻译的这本书,我不禁哑然失笑,十几年前我还在[中国 Python 用户组]的邮件列表里活跃的时候,经常花大量精力和同好们讨论怎么把一段程序写成一行流,一定要找出既简洁又高效的方法来才肯罢休,乐此不疲。从这个游戏出发,逐步形成了如何写出更加 Pythonic 的...
看到 [su27 老师]翻译的这本书,我不禁哑然失笑,十几年前我还在[中国 Python 用户组]的邮件列表里活跃的时候,经常花大量精力和同好们讨论怎么把一段程序写成一行流,一定要找出既简洁又高效的方法来才肯罢休,乐此不疲。从这个游戏出发,逐步形成了如何写出更加 Pythonic 的...
这本书作者是写了网站补充滴 [https://pythononeliners.com/] 官方仓库也给个口子 [https://github.com/finxter/PythonOneLiners] 机器学习,数据科学还有正则解析那些不能算一行流 这种归类有凑字数嫌疑哦 别太认真, 看得懂一行流和只写一行流 两种境界
不得不说,作者真的很会找写书的话题。用一行Python代码解决问题不知道从什么时候起成了一种时尚,一种追求。所以我想,那些追捧一行代码的人多半会有兴趣看看这本书。而我是不喜欢把所有逻辑都塞进一行代码的,但我也要看看这本书——一来是想看看作者能不能说服我,让我发现...
用户评价
这是一本让人读完后,会忍不住想立刻重构自己现有代码库的“魔典”。它的语言风格极为精炼,每一句话都饱含信息量,几乎没有废话。读这本书的过程,与其说是学习,不如说是一种思维的重塑。它不断地挑战你对Python既有认知的边界。例如,关于元编程和动态类型处理的部分,作者展示了一些教科书上不常提及的技巧,这些技巧能让你在不牺牲代码清晰度的情况下,实现非常底层的定制化控制。我发现自己开始下意识地在日常工作中寻找那些可以被“压缩”和“优化”的结构。它提供的不仅仅是技巧,更是一种对代码简洁和高效的近乎偏执的追求精神。这本书的价值在于,它将那些分散在各种官方文档和社区讨论中的“最佳实践”,提炼并整合成了系统化、可复制的方法论。对于任何想要将Python技能提升到艺术境界的程序员而言,这本书都是不可或缺的案头之宝。
这本书的视角非常独特,它仿佛是用一个高倍显微镜,聚焦于Python语言中最具魔力的那些角落。我原本以为自己对Python的掌握已经 cukup 熟练了,但阅读这本书后,才发现自己一直停留在“能用”的层面,而这本书展示的是“如何用得登峰造极”。它并不侧重于介绍那些人尽皆知的标准库,而是深入挖掘了那些隐藏在深层API中的优化潜力,以及如何通过巧妙的组合来实现惊人的效果。其中关于生成器表达式和迭代器惰性求值的章节,尤其让我印象深刻。我过去常常为了处理大数据集而头疼内存问题,这本书提供的方法论,让我能够以近乎零内存占用的方式,流畅地处理百万级以上的数据流。它教会我,程序运行的本质,是资源的优化配置,而Python强大的抽象能力,正是实现这种优化的最佳武器。阅读体验是高度沉浸式的,作者的笔触非常自信且充满洞察力,绝无半点含糊不清之处。
这本书给我带来的冲击,更多是一种哲学层面的颠覆。我之前总觉得,写出高性能的程序,就得依赖C++或者Rust这类底层语言,Python在某些场景下总有性能上的妥协。然而,这本书用大量的实战案例证明了,在很多实际的业务场景中,通过精妙的Pythonic写法,完全可以将性能瓶颈转移到I/O或算法本身,而不是因为语言的特性。它像一把锋利的解剖刀,将那些拖慢程序运行的“冗余脂肪”毫不留情地切除。让我感到惊喜的是,书中对异步编程模型的阐述,也达到了一个新的高度。它没有简单地介绍`async/await`的语法糖,而是深入探讨了事件循环的工作机制,以及如何最大化并发效率。这种对底层原理的深刻把握,再结合到极简的代码实践中,形成了一种令人信服的说服力。这本书更像是一本修行手册,指引你如何去除杂念,专注于代码的本质美感与效率。
对于有一定编程基础,但渴望突破“平庸”界限的开发者来说,这本书记载的智慧价值无可估量。它不是那种入门级的“Hello World”指南,而是面向中高级工程师的“内功心法”。我尤其欣赏作者在讲解复杂概念时所采用的类比手法,这些比喻非常贴切且富有画面感,瞬间打消了许多传统上被认为晦涩难懂的技术障碍。比如,书中关于装饰器链式调用的描述,那种层层递进、互相作用的机制,被解释得如同流水线上的精密操作,清晰明了。更重要的是,这本书强调的不仅仅是代码的“短”,更是代码的“韧性”。如何写出既能应对未来需求变化,又能在当前环境下保持高性能的代码,是贯穿全书的主线。它迫使你去思考,你写的每一行代码,是否都是必要的,是否达到了最佳的表达形式。读完之后,我感觉自己对Python的“道”有了更深一层的理解,而不仅仅是停留在“术”的层面。
这本书简直是信息爆炸时代的一剂清凉剂。它没有那些故弄玄虚的理论堆砌,而是直击问题的核心,用最精炼的方式展示了解决复杂问题的优雅路径。我常常在深夜里沉浸其中,那种豁然开朗的感觉,就像是迷宫中突然出现了一束光。它不仅仅是教你如何写出更少的代码,更重要的是,它训练了你的思维模式,让你学会用一种更具“流体感”的方式去审视和重构你的逻辑。比如,当我面对一个需要多层嵌套循环才能完成的任务时,翻开书中的某个章节,我才意识到原来只需要一个巧妙的函数式表达,就能将整个结构扁平化,不仅可读性大大增强,运行效率也随之提升。这本书的排版和插图也做得非常到位,每一个示例代码块都像是精心雕琢的艺术品,让人不忍心跳过哪怕一个字符。它不是那种读完就束之高阁的工具书,而是会让你时不时地翻开,寻找新的灵感和启发,每一次重读,都能发现新的层次和含义。它彻底改变了我对“简洁即是力量”的理解,原来代码的优雅程度,真的可以和其内在的效率成正比。
python写的太卷怎么办? 读书破万卷。。。。。。
重要的不是one-liners, 而是pythonic
在计算机编程领域,太多hello world教程和手册类的内容根本不应该出版成书籍,从这个意义上来说本书的价值已经成立了。但是通篇翻完也并没有说服我为什么要用一行流,比如冒着可读性变差的风险把代码塞进一行里,除了智商上的满足感之外能获得什么,更好的性能吗【问号】。不管怎么说,可以不用但不能不懂,学习一下还是很有必要。
建立审美有时候是更重要的部分!
重要的不是one-liners, 而是pythonic