3
3
## 课程简介
4
4
数据结构和算法是每个程序员需要掌握的基础知识之一,也是面试中跨不过的槛。目前关于 Python 算法和数据结构的中文资料比较欠缺,
5
5
笔者尝试录制视频教程帮助 Python 初学者掌握常用算法和数据结构,提升开发技能。
6
- 本教程是付费教程,因为笔者录制的过程中除了购买软件、手写板等硬件之外,业余需要花费很多时间和精力来录制视频、查资料、编写课件和代码,希望大家体谅。
6
+ 本教程是付费教程(文字内容和代码免费) ,因为笔者录制的过程中除了购买软件、手写板等硬件之外,业余需要花费很多时间和精力来录制视频、查资料、编写课件和代码,养家糊口不容易 ,希望大家体谅。
7
7
8
8
## 痛点
9
- - 讲 Python 数据结构和算法的资料很少
9
+ - 讲 Python 数据结构和算法的资料很少,中文资料更少
10
10
- 很多自学 Python 的工程师对基础不够重视,面试也发现很多数据结构和算法不过关
11
11
- 缺少工程应用场景下的讲解,很多讲算法的资料太『教科书化』
12
+ - 很多培训班出来的同学或者自学的同学数据结构和算法比较薄弱,面试笔试很吃亏
12
13
13
14
## 作者简介
14
15
目前就职于[ 知乎] ( https://www.zhihu.com/people/pegasus-wang/activities ) ,从实习期间接触 Python 起一直从事 Python 网站后端开发,有一定 Python 的使用和实践经验。
30
31
- 使用场景,什么时候用
31
32
32
33
## 目录结构
33
- 这里讲解的章节我参考了下边教材中列举的一些书籍,并且自己设计了大纲。
34
- 视频课程的目录结构:
34
+ 这里讲解的章节我参考了下边教材中列举的一些书籍,并且自己设计了大纲,争取做到循序渐进。因为实现一些高级数据结构的时候会用到
35
+ 很多底层数据结构,防止跳跃太大导致读者理解困难。
35
36
37
+ 课程的目录结构如下,每一章都有配套的文字讲义(markdown),示例代码,视频讲解,详细的讲解一般会放在视频里,使用手写板来
38
+ 进行板书,包括文字、图示、手动模拟算法过程等。
39
+
40
+ - 课程介绍
36
41
- 课程简介之笨方法学算法
37
42
- 抽象数据类型 ADT,面向对象编程
38
43
- 数组和列表
39
44
- 链表,高级链表。双链表,循环双端链表
40
45
- 队列,双端队列,循环双端队列
41
- - 栈
46
+ - 栈,栈溢出
42
47
- 算法分析,时间复杂度 大O 表示法
43
48
- 哈希表,散列冲突
44
- - 字典和集合
49
+ - 字典
50
+ - 集合
45
51
- 递归
46
- - 线性查找和二分查找
52
+ - 查找: 线性查找和二分查找
47
53
- 基本排序算法
48
54
- 高级排序算法: 归并排序、堆排序、快排
49
55
- 树,二叉树
53
59
54
60
## 编程语言
55
61
我们这里使用最近很火的Python。Python 入门简单而且是个多面手,在爬虫、web 后端、运维、数据分析、AI 方面领域都有 Python 的身影。
56
- 知乎、豆瓣、头条、饿了么、搜狐等公司都有广泛使用 Python。笔者日常工作使用也是 Python 居多 ,有一定实践经验,
62
+ 知乎、豆瓣、头条、饿了么、搜狐等公司都有广泛使用 Python。笔者日常工作使用也是 Python,有一定实践经验,
57
63
在知乎上维护了一个专栏[ 《Python 学习之路》] ( https://zhuanlan.zhihu.com/c_85234576 ) 。
58
64
59
65
Python 抽象程度比较高, 我们能用更少的代码来实现功能,同时不用像 C/C++ 那样担心内存管理、指针操作等底层问题,
60
- 把主要心思放在算法逻辑本身而不是语言细节上,Python 也号称伪代码语言。所有代码示例使用 Python2/3 兼容代码.
66
+ 把主要心思放在算法逻辑本身而不是语言细节上,Python 也号称伪代码语言。所有代码示例使用 Python2/3 兼容代码,
67
+ 不过只在 python3.5 下测试过,推荐用相同版本 Python。
61
68
62
69
## 受众
63
70
想要学习 Python 算法和数据结构的初、中级同学,包括自学的同学和本科低年级学生等。需要掌握 Python
64
71
的基本语法和面向对象编程的一些概念,我们这里只使用最基本的 Python 语法,不会再去介绍用到的 Python 语法糖。
65
72
66
73
# 预备知识
67
- - 掌握 Python 基本语法,有过使用 Python 的经验。
74
+ - 掌握 Python 基本语法,有过使用 Python 的经验。知道 class、module、yield 等
68
75
- 基本的面向对象编程知识,会定义和使用 Python 中的类 (class)
69
76
- 知道 Python 中的魔术方法,比如 ` __len__ ` ` __contains__ `
77
+ - 无需太多数学基础,仅在算法时间复杂度分析的时候会用到一些简单数学知识
70
78
71
79
## 教材
72
80
这里我参考过三本书:
@@ -96,13 +104,16 @@ Python 抽象程度比较高, 我们能用更少的代码来实现功能,同
96
104
97
105
## 课程特点
98
106
107
+ - 每个算法和数据结构都有讲义、视频(包含讲解、图示、手动模拟)、源代码。其中只有视频内容为付费内容
99
108
- 讲义循序渐进,结合自己的学习和使用经验讲解。github 上实时更新
100
109
- 视频演示更加直观易懂
101
- - 演示代码实现思路,现场编写
102
- - 偏向工程应用和代码实现。代码直接可以用。
103
- - 良好的工程实践:[ 编码之前碎碎念(工程实践)] ( http://python-web-guide.readthedocs.io/zh/latest/codingstyle/codingstyle.html ) 。这是很多看了几本书没有太多实践经验就敢讲课的培训班老师教不了的。
104
- - 每个实现都会有单测来验证,培养良好的工程习惯
105
- - 结合 cpython 底层实现讲解(比如list 内存分配策略等)
110
+ - 演示代码实现思路,所有代码在视频里均现场编写
111
+ - 偏向工程应用和代码实现。代码直接可以用。每个文件都是自包含的,你可以直接运行和调试,这是目前大部分书籍做得不到位的地方
112
+ - 良好的工程实践:[ 编码之前碎碎念(工程实践)] ( http://python-web-guide.readthedocs.io/zh/latest/codingstyle/codingstyle.html ) 。
113
+ 这是很多看了几本书没有太多业界实践经验就敢讲课的培训班老师教不了的。** 知识廉价,经验无价**
114
+ - 每个实现都会有单测来验证,培养良好的编码和测试习惯,传授工程经验
115
+ - 结合 cpython 底层实现讲解(比如list 内存分配策略等),避免一些使用上的坑
116
+ - 每篇讲义后有思考题和延伸阅读链接,帮助大家加深思考和理解
106
117
107
118
## 资料
108
119
@@ -121,14 +132,18 @@ Python 抽象程度比较高, 我们能用更少的代码来实现功能,同
121
132
- 时间、空间复杂度
122
133
- 使用场景,什么时候用
123
134
- 自己尝试实现,如果抛开视频自己写起来有困难可以多看几次视频,一定要自己手动实现。很多面试可能会让手写
124
- - 每章讲义后边都会有我设计的几个小问题,最好能够回答上来
135
+ - 每章讲义后边都会有我设计的几个小问题,最好能够回答上来。同时还有代码练习题,你可以挑战下自己的掌握程度。
125
136
- 最好按照顺序循序渐进,每章都会有铺垫和联系
126
137
127
138
## 课程目标
128
139
掌握基本的算法和数据结构原理,能独立使用 Python 语言实现,能在日常开发中灵活选用数据结构。
140
+ 对于找工作的同学提升面试成功率。
141
+
142
+
129
143
130
- ## 开发工具
131
- 推荐使用以下工具进行开发,如果使用编辑器你需要安装对应的 Python 插件:
144
+ ## 工具
145
+
146
+ 推荐使用以下工具进行开发,如果使用编辑器最好装对 应 Python 插件:
132
147
133
148
- Pycharm
134
149
- Sublime
@@ -139,4 +154,8 @@ Python 抽象程度比较高, 我们能用更少的代码来实现功能,同
139
154
140
155
## 勘误
141
156
142
- 如果你觉得哪里讲错了,可以在github 上提 issue 讨论,我会修改内容并重新录制视频。
157
+ 输出其实也是一种再学习的过程,中途需要查看大量资料、编写讲义、视频录制、代码编写等,难免有疏漏之处。
158
+ 有出版社找过笔者想让我出书,一来自己对出书兴趣不大,另外感觉书籍相对视频不够直观,有错误也不能及时修改,打算直接把所有
159
+ 文字内容讲义放到 github 上,供大家免费查阅。
160
+
161
+ 如果你觉得文字内容或者视频内容有错误,欢迎在github 上提 issue 讨论,我会修正相关内容,防止产生误导。
0 commit comments