Skip to content

Commit 0a31ef0

Browse files
committed
更新解析和生成
1 parent ca0d241 commit 0a31ef0

File tree

1 file changed

+12
-12
lines changed

1 file changed

+12
-12
lines changed

Learning Python/4、函数和生成器/5. 解析和生成.ipynb

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
"cell_type": "markdown",
55
"metadata": {},
66
"source": [
7-
"# 列表解析和函数式编程工具 \n",
7+
"# 1. 列表解析和函数式编程工具 \n",
88
"列表解析能够更加通用,可以在一个列表解析中编写任意数量的嵌套的 for 循环,并且每一个都有可选的关联的 if 测试:\n",
99
"```\n",
1010
"[expression for target1 in iterable1 [if condition1]\n",
@@ -102,7 +102,7 @@
102102
"cell_type": "markdown",
103103
"metadata": {},
104104
"source": [
105-
"## 列表解析和矩阵 \n",
105+
"## 1.1 列表解析和矩阵 \n",
106106
"使用 Python 编写矩阵的一个基本方法就是使用嵌套的列表结构:"
107107
]
108108
},
@@ -347,14 +347,14 @@
347347
"collapsed": true
348348
},
349349
"source": [
350-
"# 生成器函数和表达式 \n",
350+
"# 2. 生成器函数和表达式 \n",
351351
"Python 提供了工具在需要的时候才产生结果,而不是立即产生结果。有两种语言结构尽可能地延迟结果创建。 \n",
352352
"- 生成器函数:编写为常规的 def 语句,但是使用 yield 语句一次返回一个结果,在每个结果之间挂起和继续它们的状态。\n",
353353
"- 生成器表达式:类似于列表解析,但是它们返回按需产生结果的一个对象,而不是构建一个结果列表。\n",
354354
"\n",
355355
"由于二者都不会一次性构建一个列表,它们节省了内存空间,而且允许计算时间分散到各个结果请求。 \n",
356356
"\n",
357-
"## 生成器函数:yield VS return \n",
357+
"## 2.1 生成器函数:yield VS return \n",
358358
"生成器函数,编写可以送回一个值并随后从其退出的地方继续的函数,因为它们随着时间产生值的一个序列。 \n",
359359
"\n",
360360
"一般来说,生成器函数和常规函数一样,然而,当创建时,生成器函数自动实现迭代协议,以便可以出现在迭代背景中。 \n",
@@ -729,7 +729,7 @@
729729
"collapsed": true
730730
},
731731
"source": [
732-
"## 生成器表达式:迭代器遇到列表解析 \n",
732+
"## 2.2 生成器表达式:迭代器遇到列表解析 \n",
733733
"生成器表达式就像一般的列表解析一样,但是它们是括在圆括号中而不是方括号中。"
734734
]
735735
},
@@ -1384,7 +1384,7 @@
13841384
"cell_type": "markdown",
13851385
"metadata": {},
13861386
"source": [
1387-
"## 生成器是单迭代器对象 \n",
1387+
"## 2.3 生成器是单迭代器对象 \n",
13881388
"生成器函数和生成器表达式自身都是迭代器,并由此只支持一次活跃迭代。"
13891389
]
13901390
},
@@ -1600,7 +1600,7 @@
16001600
"cell_type": "markdown",
16011601
"metadata": {},
16021602
"source": [
1603-
"## 示例\n",
1603+
"## 2.4 示例\n",
16041604
"示例只在序列中有效。 \n",
16051605
"\n",
16061606
"**打乱序列** \n",
@@ -1754,7 +1754,7 @@
17541754
"cell_type": "markdown",
17551755
"metadata": {},
17561756
"source": [
1757-
"## 示例:用迭代工具模拟 map "
1757+
"## 2.5 示例:用迭代工具模拟 map "
17581758
]
17591759
},
17601760
{
@@ -1927,7 +1927,7 @@
19271927
"cell_type": "markdown",
19281928
"metadata": {},
19291929
"source": [
1930-
"# 解析语法总结 \n",
1930+
"# 3. 解析语法总结 \n",
19311931
"在 Python 3.X 中还有两种可用的解析表达式形式:集合解析和字典解析。\n",
19321932
"- 对于集合,新的常量形式{1, 3, 2}等同于 set([1, 3, 2]),并且新的集合解析语法 `{f(x) for x in S if P(x)}` 就像是生成器表达式 `set(f(x) for x in S if P(x))`,其中 f(x) 是一个任意的表达式。\n",
19331933
"- 对于字典,新的字典解析语法 `{key: val for (key, val) in zip(keys, vals)}` 像 `dict(zip(keys, vals))` 形式一样工作,并且 `{x: f(x) for x in items}` 像生成器表达式 `dict((x, f(x)) for x in items)` 一样工作。\n",
@@ -2023,7 +2023,7 @@
20232023
"cell_type": "markdown",
20242024
"metadata": {},
20252025
"source": [
2026-
"## 作用域和解析变量 \n",
2026+
"## 3.1 作用域和解析变量 \n",
20272027
"Python 3.X 中本地化四种形式的循环变量——生成器、集合、字典和列表解析中的临时循环变量名对于表达式是本地的。它们不和外部的名称冲突,也在外部不可用。和 for 循环迭代语句工作方式不同。"
20282028
]
20292029
},
@@ -2147,7 +2147,7 @@
21472147
"collapsed": true
21482148
},
21492149
"source": [
2150-
"## 针对集合和字典的扩展的解析语法 \n",
2150+
"## 3.2 针对集合和字典的扩展的解析语法 \n",
21512151
"集合和字典解析都支持嵌套相关的 if 子句从结果中过滤掉元素。"
21522152
]
21532153
},
@@ -2382,7 +2382,7 @@
23822382
"name": "python",
23832383
"nbconvert_exporter": "python",
23842384
"pygments_lexer": "ipython3",
2385-
"version": "3.6.5"
2385+
"version": "3.6.8"
23862386
},
23872387
"toc": {
23882388
"nav_menu": {},

0 commit comments

Comments
 (0)