Python一行流:像专家一样写代码pdf下载pdf下载

Python一行流:像专家一样写代码百度网盘pdf下载

作者:
简介:本篇主要提供Python一行流:像专家一样写代码pdf下载
出版社:电子工业出版社
出版时间:2021-09
pdf下载价格:0.00¥

免费下载


书籍下载


内容介绍

编辑推荐

适读人群 :适合所有IT学习者,不管你是刚刚接触Python的小白,还是久经沙场的码农,都可以通过这本书获得你所需的内容

《Python一行流》会教你阅读和编写一行流程序,系统性拆分和理解任意一行Python代码,像专家一样得心应手地编写强壮、紧凑的Python程序。本书有5个章节,覆盖了编程技巧、正则表达式、机器学习、数据科学的核心课题,以及许多有用的算法。通过对单行程序范例的详细介绍,本书解释了计算机科学的关键概念,并可用来提升编码与分析的重要技能。你会学到Python的进阶功能,例如列表解析、切片、lambda函数、正则表达式、map和reduce函数,以及切片赋值等。还将学到以下内容:

√ 借助各种数据结构解决真实世界的问题,例如用布尔索引从数据集中找出污染超过平均水平的城市。

√ 使用NumPy的基础功能,如数组、形状、轴、类型、广播、高级索引、切片、排序、搜索、聚合以及数据分析等。

√ 使用K-Means算法进行无监督学习,以对高维数组中的数据进行分析。

√ 编写更高级的正则表达式,会用到组与命名组、前向否定、转义字符、空白字符、字符集(以及反向字符集),以及贪婪/非贪婪操作符。

√ 理解一系列计算机科学主题,包括异形词、回文、幂集、排列、阶乘、素数、斐波那契数列、混淆加密、查找和排序算法。


内容简介

本书专注于从初学迈向进阶的Python编码技术:如何像专家一样写出优雅、准确、简洁高效的Python 单行代码;阅读任意一行Python 代码时,如何系统性地对其进行拆解和分析。全书分为6 个章节,以单行代码切入计算机科学的各个领域,包括Python 语言基础、编程技巧、基于NumPy的科学计算、机器学习的主要算法模型、正则表达式进阶、计算机科学中若干经典算法的单行实现等。

作者简介

Christian Mayer是一位计算机科学博士,也是知名Python网站创始人和维护者。该网站非常活跃,订阅人数已经超过 2万且仍在持续增长。他的网站不仅发展迅速,也帮助数以万计的学习者提升了编码技能和优化了在线业务。他同时也是CoffeeBreak Python系列自出版图书的作者。译者苏丹,网上id一般为su27,2009年毕业于北京师范大学数学系,主要从事后端编程,也曾从事前端与客户端开发工作。目前为豆瓣用户产品后端负责人,日常跟Python打交道较多。2016年翻译出版《深入理解 Flask》一书。

译者苏丹,网上id一般为su27,2009年毕业于北京师范大学数学系,主要从事后端编程,也曾从事前端与客户端开发工作。目前为豆瓣用户产品后端负责人,日常跟Python打交道较多。2016年翻译出版《深入理解 Flask》一书。

目录

导语 ........................................................................................................................ 1

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

目录 XIX

列表解析和切片 ......................................................................................................... 41

基础背景 ............................................................................................................. 42

代码 ..................................................................................................................... 42

它是如何工作的 ................................................................................................. 43

使用切片赋值来修复损坏的列表 .............................................................................. 43

基础背景 ............................................................................................................. 43

代码 ..................................................................................................................... 44

它是如何工作的 ................................................................................................. 45

使用列表连接分析心脏健康数据 .............................................................................. 46

基础背景 ............................................................................................................. 46

代码 ..................................................................................................................... 48

它是如何工作的 ................................................................................................. 48

使用生成器表达式查出未达最低工资标准的公司 .................................................. 48

基础背景 ............................................................................................................. 49

代码 ..................................................................................................................... 49

它是如何工作的 ................................................................................................. 50

使用 zip()函数格式化数据库 ..................................................................................... 51

基础背景 ............................................................................................................. 51

代码 ..................................................................................................................... 52

它是如何工作的 ................................................................................................. 53

总结 ............................................................................................................................. 54

3 数据科学 .......................................................................................................... 55

.....................................................................................................

4 机器学习 ........................................................................................................ 102

....................................................................................

5 正则表达式 .................................................................................................... 155

................................................................................

6 算法 ...........................................................................

...............................................................................................

后记 .................................................................................................................... 221


前言/序言

推荐序一:干一行,爱“一行”

几年创业,几经浮沉,我又回到了编码一线,重拾写代码的乐趣。幸好当年读过几本经典书籍打底,如今重操旧业,尚能游刃有余。感慨中刚好春雨兄找我为《Python一行流》作序,读来很有感触,堪比当年经典,便欣然应允。

其实我一直是“一行流”的爱好者。早在使用 Python 2.3 版本的时代,我便尝试如何用一行代码完成字符串里的字符排序,并将过程和结果记录在博客 1 上。虽然自从 Python 2.4 版本增加了 sorted()函数后我的奇技淫巧便没了用武之地,但这种追求精确与极简的 Pythonic 哲学持续地影响着我,多年后我以改善 Python 程序为名出版了自己的第一本书。

与我的浅尝辄止不同,这本书把一行流当作了一个研究课题,所以整书极具体系。作者从 Python 语言、库和算法多个层面和角度去探寻更简明的代码写法,有助于读者建立深入挖掘语言特性的动力,最终提升读者的知识水平,写起代码如臂使指,“码”上生花。我曾在网上分享过一段利用数字图像形态学实现茶滤孔数计算的Python 程序,需要 80 行代码,而网友 Arkbird 用一行 mathematica 代码完成同样的算法,“我看不懂,但我大受震憾。” 读者们纷纷点赞。编写一行流的代码是一个“好程序员”的普遍追求,也是对语言、库和算法的掌握程度和编码能力的体现,但阅读本书显然有助于此,读完本书后我编写了自己的“一行流”版本:

print(("holes count: ", s := __import__('skimage', fromlist=['measure', 'morphology','io']))[0],

s.measure.label(s.morphology.binary_opening(s.io.imread("sample.png", as_gray=True) <0.5, selem=s.morphology.square(3)), return_num=True)[1])

代码行数“浓缩”80 倍之后,性能也提升了 37 倍,同时自我感觉对 Python 语言、skimage 库和数字图像算法的理解更进了一步。许多初学者入门后陷入不知道能用 Python 做什么的困惑,不妨读一下这本书,然后尝试把之前写过的代码改为“一行流”风格,应该能大有所获。

本书译者苏丹网名 su27,他是圈内驰名“文艺青年”,前几年一直听说他在写小说,搞文学创作。作为长年混迹文青基地豆瓣网的程序员,这并不奇怪,奇怪的是他突然翻译了这本书。不过 su27 毕竟是在 Python 的“黄埔军校”豆瓣团队中成长起来的,这对本书的品质提供了保障。在阅读这本书的过程中,也印证了我的所想,整本书清晰明了,极具美感,加上作者精心编排的知识体系,读来如上云梯,愉悦中知识就获得了提升,是以为序。

——赖勇浩

广州齐昌网络科技有限公司创始人兼总经理

《编写高质量代码:改善Python程序的91个建议》作者



推荐序二:Su27 般大气凌然


(Su27 当然比 Mig29 大气)

一直以为 Su27 在写科幻小说,

突然邀请来为新书写序,

只能感叹:

不会写科幻小说的程序员一定不是好翻译


一看内容,更感叹,探讨领域竟然如此“宅”:

专注揭露

如何在 Python 中

编写能浓缩在单行的

神级 Pytonic 代码

讲真,Guido 老爹当年将 lambda 引入 Python 时,就劝过:

函式编程虽好,可别贪杯;

为此专门重新设计语法,

将 Python 构造为唯一基于排版来划分语法层次的通用脚本语言;

要知道,其它通用语言都通过标识符

(比如:{} begin end)来划分代码块,

本质上无论软件由多少行构成,

都可以写在一行里,

而编译器照样可以完美解析;

(实际上,很多混淆器就是这么干的.)


这样一来,

在 Python 中无论初中高级,

大家写出来的代码,

都会很相似,

很直白,

结构很清晰


但是,

脑力过剩的程序员当然要为智商寻求宣泄,

果断发现 Python 内置的炫酷可能性:

通过列表推导式,

就可以轻易绕过缩进规约,

将几个想法集中进一行,

配合 Lambda 就可以将更多行为集成到一行中;

立即,

代码看起来就不那么泯然众人矣 -> 第一眼根本看不明白要干什么


确实,这些可能性,

毕竟是老爹精心掩埋的珍宝,

以往也只有零星文章介绍几个案例,

这次是一整本书,可以大大过瘾;

翻译没毛病,老程序猿了;

版式也够 geek,

清晰区分了内容/代码/注释/点评;

(可惜,译者太自谦,

没好意思大力插入丰富译注,

将自己经验也配套给出,

下个版次,值得追加.)


内容上,结构清晰,

从语法,到模块,

到第三方模块,

并第一时间构建了自己的 元述式:

0: 问题阐述

1: 常规处理

2: 一行流代码

3: 如何工作的? 解析


这样一个个案例,

就象一片片精致的卡片,

有序拼贴起来,形成 一行流 小世界,

同时,

每个案例故事,

又都是能独立使用的,

随时可以拎出来用在具体工程中;


这应该是流式图书构建法


只可惜,没见到 海象表达式:= 相关案例,

这种新语法在 Python 3.8 中正式引入,

支持直接在列表推导式中进行复杂的判定,

结合迭代工具,简直可以在 ["列表"] 中构造整个儿世界;


真心建议,在修订版中,Su27 亲自补一章,将:= 结合到实用场景中,

作为中国版一行流大补丁,反馈回作者心上.

——大妈/ZoomQuiet PyUG 联合创始人,蟒营 ® 创始人



推荐序三

看到 su27 老师翻译的这本书,我不禁哑然失笑,十几年前我还在中国 Python 用户组的邮件列表里活跃的时候,经常花大量精力和同好们讨论怎么把一段程序写成一行流,一定要找出既简洁又高效的方法来才肯罢休,乐此不疲。从这个游戏出发,逐步形成了如何写出更加 Pythonic 的代码来的认知,而这个美学层面的认知升级,我至今受益不止。编码是快乐的,希望有更多人能从这种“寻找极致”的过程中,体会到代码之美。

——洪强宁 雅识科技联合创始人兼CTO



推荐序四

谈起 Python,从 2000 年到 2021 年,一门陪伴了我 20 多年的编程语言,其他语言大多是生命的过客,或者因为某些需求临时起意而去学习使用,但唯独 Python,从始至终用到了现在,但即便用了这么久,都不敢轻言对于 Python 已经彻底了解,尤其谈起一行流,更是各种编程语言论坛里最爱比拼的项目之一,所谓一行流,就是能不能把一个功能用一行代码去实现,Python 的一行流既保证了代码的简洁,又不会牺牲很大的可读性,但一个看似如此简单的事情,如果不对这门编程语言掌握的非常透彻,是很难做到的。如此有趣的主题,这么多年来,却很少看到这个主题的图书,这次有幸读到这本书,也从中学到了很多,尤其是机器学习和算法两个章节,读过之后感觉醍醐灌顶,马上就可以把所学应用到日常工作中去了。同时,本书的翻译者 su27 老师本身也是资深的 Python 开发者,在翻译的准确度和流畅度方面,本书也远超同类图书。最后,很荣幸为此书写序,甚感开心,预祝此书大卖,能够帮助到更多的 Python 学习者与开发者。

——清风 前豆瓣技术总监,开 PA 创始人



推荐序五

《Python 一行流》 是一本适合 python 程序员进阶的书,帮助读者更好地领悟python 编程的思维方式。整本书从解决实际问题出发,通过一行流的形式,简洁清晰的解决问题,很多例子都给出了非常新颖的角度。更为难得是,作者并非一味的追求一行流,在多行代码能够带来更好阅读性的时候,作者也欣然推荐指出此处一行流的不住。苏老师的翻译流畅准确,阅读起来非常舒服,无论是中阶 python 程序员还是高阶程序员,相信通过阅读此书都能有所收获。

——彭宇 豆瓣平台架构负责人




译 者 序

大约 14 年前,我是个前端程序员,虽然没学过 Python,但小伙伴们写的 Python 代码十分好读,我看着就有种无师自通的幻觉,有时候自己也写一些。虽然能跑通,但老觉得不对劲,生涩、重复、结巴,好像刚学了两天英语就非要跑去跟老外聊天一样。有个后端工程师叫 PY(巧了不是?),我有时就把自己写的发给他,让他帮我改,我想要“像 Python 一些”,果然他一改就流畅了很多,变得又短又好读了。那时候我也帮后端改 JavaScript,但现在想来当时水平十分一般,真是惭愧。

后来我经常想,到底是什么让代码看起来“更 Python”了。是一些 Python 独有的关键字和语法吗?是函数式编程吗?是强大的动态特性吗?是黑魔法元编程吗?

也许是,又不是。写了多年后端,我仍然不认为自己掌握了其中的秘诀,但我知道窍门一定隐藏在一行行朴实、优雅又节制的 Python 语句之中。

最近看了不少年轻朋友的简历和笔试答卷,很多人简历上写了“熟悉 Python”,甚至做过 Python 项目,用 Python 写了网站或者应用程序之类。但打开笔试中实际的Python 代码,有时候只需要两三行,就能看清底细。也许程序能跑通,甚至答案也对,但就是知道他们跟 Python 一点都不熟;他们知道 Python 的语法,但又不知道Python 怎么写;该简洁的地方冗长,该清晰的地方意义不明,充满了多余的循环和分支,毫无技巧可言,不会用正则表达式,更不要提不规范的空格和换行。读这样的程序让人焦虑烦躁,到处都在浪费空间、性能和阅读者的时间,到处都在催促我赶紧把页面关掉。看多了这样的程序,会让我觉得 Python 很没意思。

我想,或许他们实力不弱,但如果把这样的代码贡献到开源社区,恐怕每一行都会经受一番严厉的拷问。也许他们的确花了不少时间在学习和练习使用 Python,但可惜没有接触过真实世界的合作开发,没有经受过复杂项目的代码审核,没有一个人或者一本书确切地告诉他们,如何把简简单单的一行 Python 代码写好。不仅仅是写到能通过编译,而是写好,这是业余选手和职业玩家的区别。

第一次看到书名中“一行流”这个词时,我心中浮现的是 JavaScript 的单行程序打包器,或者 C 语言混乱代码大赛这样的东西,很多语言都有在一行代码中玩出各种花样的奇技淫巧。但我又注意到,这是一本 Python 的书。常识告诉我,没有任何一本讲 Python 的书敢违反至高无上的《Python 之禅》(尤其是“Readability counts”)。

果然,这本书讲的正是我觉得十分重要,但一直少有专著的主题:如何写出真正Pythonic 的单行程序。在这一主题下,作者从基础出发,一步步增加挑战。在我看来,他把这个问题在本书中分为几个层次,按照挑战难度及章节的前后顺序教你:

1. 如何把你的每一行程序写得简洁漂亮、Pythonic。

2. 如何仅用一行程序,巧妙地解决实际问题,但又不会过分聪明以至于影响可读性,并且满足第一条。

3. 使用 Python 可以涉足计算机科学的哪些领域?全都用一行程序搞定,同时还得满足前两条。

《Python 之禅》有云,达成某个任务的最佳编码方式,有且仅有一种。这导致在Python 范畴内讨论单行程序的威力,是需要极度谨慎的,因为即便再精妙和强大的单行程序,如果它不是“那一种”方式,就没有人会在实践中使用,也就只是个玩具,而没有实用的价值。作者在选择例子的时候十分小心,即使再复杂的例子,理解之后也会觉得,确实是最好的选择。同时也会为之惊叹,短短一行,竟有如此强大的能力,就算是在机器学习、科学计算这种专业程度很高的领域也能游刃有余。

希望手头的这本小书,能为 Python 玩家“打怪升级”提供一件称心的装备,做一盏指路明灯,驱散迷雾,打开地图视野,明确职业生涯前进的路线。