1
1
# Python 算法与数据结构视频教程
2
2
3
3
## 课程简介
4
- 数据结构和算法是每个程序员需要掌握的基础知识之一,也是面试中跨不过的槛。目前关于 Python 算法和数据结构的中文资料比较欠缺 ,
5
- 笔者尝试录制视频教程帮助 Python 初学者掌握常用算法和数据结构 ,提升开发技能。
4
+ 数据结构和算法是每个程序员需要掌握的基础知识之一,也是面试中跨不过的槛。目前关于 Python 算法和数据结构的系统中文资料比较欠缺 ,
5
+ 笔者尝试录制视频教程帮助 Python 开发者掌握常用算法和数据结构 ,提升开发技能。
6
6
本教程是付费教程(文字内容和代码免费),因为笔者录制的过程中除了购买软件、手写板等硬件之外,业余需要花费很多时间和精力来录制视频、查资料、编写课件和代码,养家糊口不容易,希望大家体谅。
7
7
8
8
## 链接
37
37
电子书:[ 《Python web 入坑指南》] ( http://python-web-guide.readthedocs.io/zh/latest/ )
38
38
39
39
## 课程内容
40
- 包括我们在业务开发和面试中常用的算法和数据结构,希望可以帮助新人快速上手 ,很多老手写业务代码写多了很多基础知识忘记了,
41
- 也可以作为回顾。课程尽量用通俗的方式讲解,结合 python 语言和日常开发实践的经验,让没有太多基础和非科班的同学也能够理解 。
40
+ 包括我们在业务开发和面试中常用的算法和数据结构,希望可以帮助 Python 开发者快速上手 ,很多老手写业务代码写多了很多基础知识忘记了,
41
+ 也可以作为回顾。课程尽量用通俗的方式讲解,结合 python 语言和日常开发实践的经验。书中代码可以作为大家的面试笔试参考 。
42
42
对于每个算法和用到的数据结构我们需要知道:
43
43
44
44
- 原理
@@ -87,22 +87,24 @@ Python 抽象程度比较高, 我们能用更少的代码来实现功能,同
87
87
不过只在 python3.5 下测试过,推荐用相同版本 Python 进行代码编写和测试。
88
88
89
89
## 受众
90
- 想要学习 Python 算法和数据结构的初、中级同学,包括自学的同学和本科低年级学生等。需要掌握 Python
91
- 的基本语法和面向对象编程的一些概念,我们这里只使用最基本的 Python 语法,不会再去介绍用到的 Python 语法糖。
90
+ 想要学习 Python 算法和数据结构的中级同学,包括自学的同学和本科低年级学生等。需要掌握 Python
91
+ 的基本语法和面向对象编程的一些概念,有一定的 Python 使用经验。我们这里尽量只使用最基本的 Python 语法,不会再去介绍用到的 Python 语法糖。
92
+
93
+ ** 注意啊啊: 教程着重于使用 Python 实现常用算法和数据结构,不适合从来没有学过算法和数据结构的新手同学,购买之前请慎重考虑,请确保你之前看过一本数据结构和算法的教材,最好有过其他语言实现算法的经验。**
92
94
93
95
# 预备知识
94
- - 有一定的 python 基础,掌握 Python 基本语法,了解 python 内置数据结构的使用方式。有过使用 Python 的经验。知道 class、module、yield 等。如果是 python 初学者,建议先补补基础,否则有些部分看着会比较吃力。
95
- - 基本的面向对象编程知识,会定义和使用 Python 中的类 (class)
96
- - 知道 Python 中的魔术方法,比如 ` __len__ ` ` __contains__ `
96
+ (注意:有些同学看起来很吃力,为了不花冤枉钱,我建议你先看看本电子书的内容和代码是否在自己的理解范围内,再决定是否购买视频。有些概念不是立马就能理解的,需要反复思考实践)
97
+
98
+ - 了解基本的数据结构和算法的概念,不适合 ** 完全 ** 没有了解过算法的新手,更不适合 Python 基础都没掌握的同学。购买之前请慎重考虑
97
99
- 无需太多数学基础,仅在算法时间复杂度分析的时候会用到一些简单数学知识。对于学习基础算法,逻辑思维可能更重要一些
98
100
99
101
## 教材
100
- 这里我参考过三本书:
102
+ 这里我参考过三本书,均可以网购纸质版或者网络上搜索电子版,建议大家先大致阅读一本教材掌握基本原理 :
101
103
102
- [ 《算法图解》] ( https://book.douban.com/subject/26979890/ ) : 图解的形式很适合新手,示例使用的是 python。建议基础较少的同学看这本书入门
104
+ [ 《算法图解》] ( https://book.douban.com/subject/26979890/ ) : 图解的形式很适合新手,示例使用的是 python。推荐基础较少的同学看这本书入门
103
105
104
106
[ 《Data Structures and Algorithms in Python》] ( https://book.douban.com/subject/10607365/ ) : 适合对 Python
105
- 和算法比较熟悉的同学,或者是有其他语言编程经验的同学。本书是英文版,缺点是书中错误真的很多,代码有些无法运行而且不够 Pythonic。
107
+ 和算法比较熟悉的同学,或者是有其他语言编程经验的同学。本书是英文版,缺点是书中错误真的很多,代码有些无法运行而且不够 Pythonic。该书 [ 勘误 ] ( http://bcs.wiley.com/he-bcs/Books?action=resource&bcsId=9003&itemId=0470618299&resourceId=35653 )
106
108
107
109
[ 《算法导论》第三版] ( https://book.douban.com/subject/20432061/ ) : 喜欢数学证明和板砖书的同学可以参考,有很多高级主题。使用伪代码
108
110
@@ -112,7 +114,7 @@ Python 抽象程度比较高, 我们能用更少的代码来实现功能,同
112
114
绘图演示+手写板+现场编码
113
115
114
116
我将使用绘图软件+手写板进行类似于纸笔形式的讲解,边讲边开个终端分成两个窗口,一个用 vim
115
- 编写代码,另一个窗口用来运行代码,所有代码我将会现场编写(还是很有挑战的),不会像某些大学教师一样只喜欢念 ppt 。
117
+ 编写代码,另一个窗口用来运行代码,所有代码我将会现场编写(还是很有挑战的)。
116
118
每个视频我会尽量控制时长,讲的内容尽量通俗易懂,摆脱学院派的授课方式。
117
119
118
120
你可以参考我在知乎发的专栏文章看下:
@@ -137,15 +139,15 @@ Python 抽象程度比较高, 我们能用更少的代码来实现功能,同
137
139
138
140
## 资料
139
141
140
- - 视频。包含所有讲解视频
142
+ - 视频。包含所有讲解视频(网易公开课)
141
143
- 代码示例。所有代码我会放到 github 上。
142
144
- markdown 讲义,包含视频内容的提要等内容
143
145
- 延伸阅读。我会附上一些阅读资料方便想深入学习的同学
144
146
145
147
## 如何获取每章代码
146
148
147
- 注意每一章目录里都有 py 文件,在电子书里看不到。clone 下代码找到对应目录里的 python 文件即是每章涉及到的代码。
148
- 由于代码实现千差万别,本书代码实现可能具有一定的个人风格 ,仅供参考。
149
+ 注意每一章目录里都有 py 文件,在电子书里看不到。clone 下本代码仓库找到对应目录里的 python 文件即是每章涉及到的代码。
150
+ 由于代码实现千差万别,本书代码实现具有一定的个人风格,不代表最佳实现 ,仅供参考。
149
151
150
152
151
153
## 如何学习
@@ -167,7 +169,7 @@ Python 抽象程度比较高, 我们能用更少的代码来实现功能,同
167
169
对于找工作的同学提升面试成功率。
168
170
169
171
170
- ## 工具
172
+ ## 开发和测试工具
171
173
172
174
推荐使用以下工具进行开发,如果使用编辑器最好装对 应 Python 插件,笔者视频演示中使用了 vim,读者可以自己挑选自己喜欢的开发工具:
173
175
@@ -177,7 +179,7 @@ Python 抽象程度比较高, 我们能用更少的代码来实现功能,同
177
179
- Vscode
178
180
- Vim/Emacs
179
181
180
- 代码中使用到了 pytest 测试框架和 when-changed 文件变动监控工具(方便我们修改完代码保存后自动执行测试),你需要用 pip 安装
182
+ 注意视频中使用到了 pytest 测试框架和 when-changed 文件变动监控工具(方便我们修改完代码保存后自动执行测试),你需要用 pip 安装
181
183
182
184
``` py
183
185
pip install pytest
@@ -189,15 +191,16 @@ pip install when-changed
189
191
``` sh
190
192
#! /usr/bin/env bash
191
193
192
- # pip install when-changed
194
+ # pip install when-changed, 监控文件变动并且文件修改之后自动执行 pytest 单测,方便我们边修改边跑测试
193
195
when-changed -v -r -1 -s ./ " py.test -s $1 "
194
196
```
195
197
将以上内容放到 test.sh 文件后加上可执行权限, ` chmod +x test.sh ` ,之后就可以用
196
198
197
199
```
198
200
'./test.sh somefile.py'
199
201
```
200
- 每次我们改动了代码,就会自动执行代码里的单元测试了。pytest 会自动发现以 test 开头的函数并执行测试代码。
202
+ 每次我们改动了代码,就会自动执行代码里的单元测试了。pytest 会自动发现以 test
203
+ 开头的函数并执行测试代码。良好的工程需要我们用单测来保证,将来即使修改了内部实现逻辑也方便做回归验证。
201
204
202
205
203
206
## 勘误
@@ -217,8 +220,8 @@ pip install when-changed
217
220
如果读者关于代码、视频、讲义有任何疑问,欢迎一起讨论
218
221
请注意以下几点:
219
222
220
- - 优先在网易云课堂的讨论区提问,方便别的同学浏览。如果未购买视频,也可以直接在 github 里提出 issue,笔者会有空会给大家解答 。
221
- - 描述尽量具体,视频或者代码哪一部分有问题?
223
+ - 优先在网易云课堂的讨论区提问,方便别的同学浏览。如果未购买视频,也可以直接在 github 里提出 issue,笔者有空会给大家解答和讨论 。
224
+ - 描述尽量具体,视频或者代码哪一部分有问题?请尽量把涉及章节和代码贴出来,方便定位问题。
222
225
- 如果涉及到代码,提问时请保持代码的格式
223
226
224
227
@@ -238,12 +241,13 @@ pip install -r requirements.txt
238
241
# 如果你 fork 了本项目,可以定期拉取主仓库的代码来获取更新,目前还在不断更新相关章节
239
242
```
240
243
241
- 编写并查看 :
244
+ 你可以 clone 本项目后在本地编写和查看电子书 :
242
245
``` sh
243
246
mkdocs serve # 修改自动更新,浏览器打开 http://localhost:8000 访问
244
247
# 数学公式参考 https://www.zybuluo.com/codeep/note/163962
245
248
mkdocs gh-deploy # 部署到自己的 github pages
246
249
```
250
+
247
251
扫码加入课程:
248
252
249
253
![ 扫码加入课程返现30%] ( http://7ktuty.com1.z0.glb.clouddn.com/Screen%20Shot%202018-06-02%20at%2020.37.46.png )
0 commit comments