第1章 程序设计语言Python 1
1.1 Python的魅力 1
1.1.1 Python很容易记忆 2
1.1.2 Python很容易使用 3
1.1.3 Python有广阔的前景 4
1.2 Python(Anaconda)的下载和安装 6
1.2.1 什么是Anaconda 6
1.2.2 必要的学习环境 7
1.2.3 在Windows系统中安装Anaconda 8
1.2.4 在macOS(OS X)系统中安装Anaconda 9
1.2.5 在Linux系统中安装Anaconda 10
1.2.6 已经安装Python的情况 11
1.2.7 安装本家版Python 11
1.3 交互式脚本(对话型脚本) 13
1.3.1 在Windows系统中启动交互式脚本 13
1.3.2 在macOS、Linux系统中启动交互式脚本 14
1.3.3 输入Python代码 15
1.3.4 关闭交互式脚本 20
1.4 在文件中编写Python程序 20
1.4.1 使用Editor(编辑器)编写程序 21
1.4.2 保存Python程序 21
1.4.3 在Windows系统中运行Python的脚本文件 22
1.4.4 在macOS、Linux系统中执行Python的脚本文件 23
1.4.5 推荐的编辑器和选择方法 24
1.5 使用Jupyter Notebook 26
1.5.1 在Windows、macOS系统中启动内核 28
1.5.2 在Linux系统中启动内核 28
1.5.3 使用主面板 29
1.5.4 制作Notebook 29
1.5.5 使用Notebook运行程序 30
1.5.6 保存Notebook 32
1.5.7 结束Notebook 33
1.5.8 使用Jupyter Notebook的tmpnb 33
1.5.9 示例代码的运行方法 34
第2章 用Python开始程序设计 36
2.1 使用数值 36
2.1.1 使用数值的四则运算 37
2.1.2 四则运算和优先顺序 38
2.2 使用变量 38
2.2.1 定义变量 38
2.2.2 使用变量进行计算 39
2.3 使用字符串 41
2.3.1 定义字符串 41
2.3.2 字符串的连接 42
2.3.3 复合运算符 43
2.3.4 统一类型的Python风格 44
2.3.5 字符串与数值的转换(类型转换) 45
2.4 使用列表 47
2.4.1 定义列表 47
2.4.2 指定索引取出元素 48
2.4.3 列表的连接 50
2.4.4 元素的置换和删除 50
2.4.5 使用切片取出多个元素 52
2.4.6 列表的列表——二维数组 53
2.4.7 列表的合计、最大值和最小值 55
2.4.8 查看列表长度 56
2.5 用for语句进行循环操作 57
2.6 用if语句进行条件分支 61
2.6.1 比较数值 63
2.6.2 比较字符串 63
2.6.3 检索字符串 64
2.6.4 比较列表 64
2.6.5 检索列表元素 65
2.6.6 使用else语句 65
2.7 使用函数 69
2.7.1 什么是函数 69
2.7.2 调用函数 70
2.7.3 函数的参数 70
2.7.4 函数的返回值(1) 71
2.7.5 定义函数 72
2.7.6 定义参数 74
2.7.7 函数的返回值(2) 75
2.7.8 本地变量 76
2.8 使用模块 79
2.8.1 导入模块 80
2.8.2 import语句的as 81
2.8.3 使用了from的导入 81
2.8.4 模块的查找方法 82
第3章 掌握Python的基础 83
3.1 使用字典 83
3.1.1 什么是字典 83
3.1.2 使用键取出元素 84
3.1.3 使用键替换元素 85
3.1.4 添加新的键与值 86
3.1.5 使用键删除元素 87
3.1.6 确认键的存在 88
3.1.7 使用键的循环 89
3.2 使用set(集合) 90
3.2.1 定义set 91
3.2.2 求set的并集 91
3.2.3 求set的差集 92
3.2.4 求set的交集 92
3.2.5 求set的异或 93
3.2.6 set与列表 94
3.2.7 set与比较 94
3.3 使用元组 95
3.4 if语句的应用 99
3.4.1 比较运算符 99
3.4.2 比较运算符与True和False 99
3.4.3 关于比较的备忘录 100
3.4.4 复杂的比较——逻辑运算 100
3.5 循环的应用 101
3.5.1 使用while语句制作循环 101
3.5.2 使用了break语句和continue语句的循环控制 103
3.5.3 循环的else 105
3.6 函数的应用 105
3.6.1 对函数定义默认参数 106
3.6.2 参数的关键字指定 107
3.6.3 函数和本地变量 108
第4章 熟练使用内置类型 111
4.1 作为对象的内置类型概述 111
4.1.1 什么是方法 111
4.1.2 作为对象的内置类型 113
4.1.3 内置的数据类型一览 114
4.1.4 数据类型的分类 116
4.1.5 序列 116
4.1.6 可更改和不可更改 117
4.1.7 set类型和字典类型 117
4.2 操作数值类型 118
4.2.1 十六进制的表示方法 118
4.2.2 二进制的表示方法 119
4.2.3 八进制的表示方法 120
4.2.4 位运算 121
4.3 熟练使用字符串类型 121
4.3.1 字符串的替换和删除 121
4.3.2 split()方法和join()方法 122
4.3.3 转义序列 124
4.3.4 raw字符串 126
4.3.5 字符串中可以使用的方法 126
4.3.6 字符串的格式化 128
4.4 熟练掌握列表类型和元组类型 132
4.4.1 给列表排序 132
4.4.2 自定义排列顺序 133
4.4.3 解包代入 134
4.4.4 切片的步长数 135
4.4.5 使用了切片元素的代入和删除 135
4.4.6 列表中可以使用的方法 136
4.5 熟练使用set类型 137
4.6 熟练掌握字典类型 138
4.6.1 通过序列等制作字典 138
4.6.2 将两个字典进行组合 139
4.6.3 巧妙处理字典的键 139
4.6.4 灵活运用字典中的方法 140
4.7 if语句和内置类型 142
4.8 for语句和内置类型 142
4.8.1 熟练使用range()函数 142
4.8.2 序列和循环计数器 143
4.8.3 使用两个序列的循环 144
4.9 函数和内置类型 145
4.9.1 返回值和解包代入 145
4.9.2 在函数中接收参数列表 146
4.9.3 在函数中接收关键字参数 147
4.10 Python的字符串和日语 147
4.10.1 有关字符编码的基础知识 147
4.10.2 Python和Unicode 150
4.10.3 字节类型 150
4.10.4 字符串向字节类型转换 152
4.10.5 字节类型向字符串类型转换 153
4.10.6 脚本文件的编码指定 153
4.10.7 编码的判断 154
4.10.8 编码和乱码 154
4.10.9 多字节字符和字符的分界 156
4.11 Python的文件处理 156
4.11.1 文件和文件对象 158
4.11.2 从文件中读取 160
4.11.3 写入文件 162
4.11.4 处理二进制文件 162
4.11.5 文件名称的处理 163
第5章 Python与函数式程序设计 165
5.1 什么是函数式程序设计 165
5.1.1 Python的语句和表达式 167
5.1.2 Lambda表达式 167
5.2 解析式 168
5.2.1 列表解析式 169
5.2.2 列表解析式的详细介绍 169
5.2.3 在列表解析式中使用if 170
5.2.4 字典解析式 171
5.2.5 set解析式 172
5.3 使用迭代 172
5.3.1 什么是迭代 172
5.3.2 迭代和延迟评价 173
5.4 使用生成器 175
5.4.1 定义生成器函数 176
5.4.2 生成器表达式 176
5.5 高阶函数和装饰器 177
5.5.1 高阶函数 177
5.5.2 装饰器 179
第6章 类与面向对象开发 181
6.1 在Python中使用类 181
6.1.1 对象和类 181
6.1.2 由类制作对象(实例) 182
6.1.3 使用实例 183
6.1.4 对象和实例 183
6.2 制作类 184
6.2.1 定义类 185
6.2.2 实例的属性 185
6.2.3 方法的定义与初始化方法“__init__()” 187
6.2.4 方法与第一参数“self” 188
6.2.5 属性的隐蔽性 192
第7章 类的继承与高级面向对象功能 194
7.1 继承类 194
7.1.1 指定超类 195
7.1.2 方法的重写 195
7.1.3 初始化方法的重写 196
7.1.4 得到使用super()的超类 197
7.1.5 插槽 198
7.1.6 特征 199
7.2 使用特殊方法 200
7.3 继承内置类型 206
第8章 模块 209
8.1 创建模块文件夹 209
8.1.1 导入模块时的操作 210
8.1.2 仅在执行文件时执行的块 211
8.1.3 类与模块 212
8.2 模块的层次(包) 213
8.2.1 包的本质 213
8.2.2 创建包 214
8.3 使用模块时的注意事项 214
8.3.1 使用from语句导入的弊端 214
8.3.2 模块的搜索顺序 214
8.4 使用第三方模块 215
8.4.1 模块的搜寻方法 215
8.4.2 使用pip安装模块 216
8.4.3 使用conda安装模块 217
8.4.4 模块的种类 217
8.4.5 手动安装模块 218
8.4.6 模块的设置场所和Python的版本 218
第9章 作用域与对象 221
9.1 命名空间、作用域 221
9.1.1 作用域的规则 222
9.1.2 类、实例的作用域 224
9.2 纯粹面向对象语言Python 225
9.2.1 对象与属性 225
9.2.2 魔法函数dir() 226
9.2.3 作为属性的方法 227
9.2.4 全部都是对象 228
9.2.5 对象与类型 228
9.2.6 对象与属性 230
9.2.7 类、模块与属性 231
9.2.8 对象和变量 231
9.2.9 对象与命名空间 232
第10章 异常处理 234
10.1 Python的异常处理 234
10.1.1 异常的发生 234
10.1.2 捕获异常 235
10.1.3 with语句 237
10.1.4 异常与追溯 237
10.1.5 引发(raise)异常 238
10.1.6 显示追溯 238
10.2 常见错误或异常与对策 239
10.2.1 读取程序时发生的错误(SyntaxError) 240
10.2.2 程序执行中发生的错误(Exception) 240
第11章 使用标准库 243
11.1 标准库的导入 243
11.2 数据结构 244
11.2.1 保持添加时顺序的“collections.OrderedDict” 244
11.2.2 带有默认值的字典“collections.defaultdict” 245
11.2.3 协助列表sort的“bisect” 246
11.3 处理日期数据的“datetime、calendar” 247
11.3.1 日期与时刻和字符串 249
11.3.2 日期与时刻的运算和比较 250
11.3.3 使用datetime.date类的方法 251
11.3.4 使用datetime.datetime类的方法 252
11.3.5 使用calendar模块 252
11.4 正则表达式“re” 254
11.4.1 re模块 254
11.4.2 Python的正则表达式 255
11.4.3 正则表达式的pattern字符串 255
11.4.4 使用正则表达式对象 257
11.4.5 将模式传递给参数,进行正则表达式的处理 259
11.4.6 使用匹配对象 260
11.4.7 正则表达式的示例 261
11.5 获取操作系统参数的“sys” 261
11.5.1 获取命令行的参数 261
11.5.2 程序的结束 262
11.5.3 其他函数与变量 262
11.6 获得及操作文件、进程等依赖OS信息的“OS” 262
11.6.1 获取、操作与进程相关的信息 262
11.6.2 文件与目录的操作 263
11.6.3 进程管理 265
11.6.4 在交换平台使用了路径的操作 266
11.7 使用数学函数“math”“random” 267
11.7.1 math——数学函数模块 267
11.7.2 random——生成随机数 269
11.8 获取因特网上数据的“urllib” 270
11.8.1 从Web或FTP中获取文件 271
11.8.2 使用request.urlretrieve()函数的示例代码 271
11.8.3 从Web或FTP中读取数据 272
11.8.4 在urlopen()返回的对象中可以使用的方法 272
11.8.5 BASIC认证 273
11.8.6 用POST方式传输数据 274
11.8.7 其他函数 275
11.9 创建字符串库虚拟文件的“io.StringIO” 276
11.10 CSV(逗号分隔值)文件的操作 277
11.11 对象持久化与序列化“shelve”“pickle” 278
11.11.1 将字典持久化的“shelve” 279
11.11.2 执行对象持久化与序列化的“pickle” 280
11.12 处理JSON数据的“json” 282
11.12.1 将JSON转换为Python的数据类型 283
11.12.2 Python的数据类型转换为JSON 283
11.12.3 json的使用示例 284
第12章 Python与数据科学 285
12.1 NumPy与matplotlib 285
12.1.1 所谓的NumPy与matplotlib 285
12.1.2 使用NumPy 287
12.1.3 使用matplotlib 290
12.2 使用NumPy 291
12.2.1 生成NumPy的array 291
12.2.2 使用数组的运算 293
12.2.3 访问元素 295
12.2.4 数组的连接 295
12.2.5 复制数组 296
12.3 使用matplotlib 296
12.3.1 使用plot()来绘制图表 297
12.3.2 控制plot()的绘制 299
12.3.3 加入字符 300
12.4 将日本的人口可视化 300
12.4.1 读取人口数据 301
12.4.2 绘制人口金字塔 303
12.4.3 将图表绘制在交互式中 304
12.4.4 推算未来人口数量 306
12.5 Python与机器学习 310
12.5.1 用机器学习进行数值的预测 311
12.5.2 机器学习的算法 315
12.5.3 由姓名来判定性别 316
12.5.4 机器学习、数据科学与Python 320
12.5.5 深度学习的登场和未来 321
第13章 Python 2 323
13.1 Python 3与Python 2的不同点 323
13.1.1 在Python 3中被削减掉的功能 324
13.1.2 在Python 2.7中可以使用的Python 3功能 324
13.1.3 在Python 3中改变了的功能 325
13.1.4 模块的再配置、名称变更 329
13.2 从Python 2到Python 3的迁移 330
13.3 结束语 331