80
80
81
81
< ul >
82
82
83
- < li > < a class ="toctree-l3 " href ="#_10 "> 教材 </ a > </ li >
83
+ < li > < a class ="toctree-l3 " href ="#_10 "> 参考教材和链接 </ a > </ li >
84
84
85
- < li > < a class ="toctree-l3 " href ="#_11 "> 讲课形式 </ a > </ li >
85
+ < li > < a class ="toctree-l3 " href ="#_11 "> 算法可视化 </ a > </ li >
86
86
87
- < li > < a class ="toctree-l3 " href ="#_12 "> 课程特点 </ a > </ li >
87
+ < li > < a class ="toctree-l3 " href ="#_12 "> 讲课形式 </ a > </ li >
88
88
89
- < li > < a class ="toctree-l3 " href ="#_13 "> 资料 </ a > </ li >
89
+ < li > < a class ="toctree-l3 " href ="#_13 "> 课程特点 </ a > </ li >
90
90
91
- < li > < a class ="toctree-l3 " href ="#_14 "> 如何获取每章代码 </ a > </ li >
91
+ < li > < a class ="toctree-l3 " href ="#_14 "> 资料 </ a > </ li >
92
92
93
- < li > < a class ="toctree-l3 " href ="#_15 "> 如何学习 </ a > </ li >
93
+ < li > < a class ="toctree-l3 " href ="#_15 "> 如何获取每章代码 </ a > </ li >
94
94
95
- < li > < a class ="toctree-l3 " href ="#_16 "> 课程目标 </ a > </ li >
95
+ < li > < a class ="toctree-l3 " href ="#_16 "> 如何学习 </ a > </ li >
96
96
97
- < li > < a class ="toctree-l3 " href ="#_17 "> 开发和测试工具 </ a > </ li >
97
+ < li > < a class ="toctree-l3 " href ="#_17 "> 课程目标 </ a > </ li >
98
98
99
- < li > < a class ="toctree-l3 " href ="#_18 "> 测试用例设计 </ a > </ li >
99
+ < li > < a class ="toctree-l3 " href ="#_18 "> 开发和测试工具 </ a > </ li >
100
100
101
- < li > < a class ="toctree-l3 " href ="#_19 "> 勘误</ a > </ li >
101
+ < li > < a class ="toctree-l3 " href ="#_19 "> 测试用例设计</ a > </ li >
102
+
103
+ < li > < a class ="toctree-l3 " href ="#_20 "> 勘误</ a > </ li >
102
104
103
105
< li > < a class ="toctree-l3 " href ="#git "> 如何更新代码(写给不熟悉 git 的同学)</ a > </ li >
104
106
105
- < li > < a class ="toctree-l3 " href ="#_20 "> 如何提问?</ a > </ li >
107
+ < li > < a class ="toctree-l3 " href ="#_21 "> 如何提问?</ a > </ li >
106
108
107
- < li > < a class ="toctree-l3 " href ="#_21 "> 本电子书制作和写作方式</ a > </ li >
109
+ < li > < a class ="toctree-l3 " href ="#_22 "> 本电子书制作和写作方式</ a > </ li >
108
110
109
111
</ ul >
110
112
@@ -272,7 +274,7 @@ <h2 id="_2">链接</h2>
272
274
< p > 视频教程已经发布在网易云课堂和 csdn 学院,内容一致,推荐使用网易云课堂。</ p >
273
275
< p > < a href ="http://study.163.com/course/introduction.htm?courseId=1005526003 "> 网易云课堂: Python数据结构与算法教程</ a > 视频教程</ p >
274
276
< p > < a href ="https://edu.csdn.net/course/detail/8332 "> csdn 学院:Python数据结构与算法教程</ a > </ p >
275
- < p > < a href ="http://ningning.today /python_data_structures_and_algorithms/ "> 网上阅读《Python 算法与数据结构教程 》</ a > </ p >
277
+ < p > < a href ="http://pegasuswang.github.io /python_data_structures_and_algorithms/ "> 网上阅读《Python 算法与数据结构教程 》</ a > </ p >
276
278
< p > < a href ="https://github.com/PegasusWang/python_data_structures_and_algorithms "> github 链接</ a > </ p >
277
279
< p > < a href ="http://python-data-structures-and-algorithms.readthedocs.io/zh/latest/ "> readthedoc 电子书下载</ a > </ p >
278
280
< p > < a href ="https://zhuanlan.zhihu.com/p/36038003 "> 《开源一个 Python 算法和数据结构中文教程[视频]》</ a > 视频讲解示例</ p >
@@ -284,7 +286,7 @@ <h2 id="_3">痛点</h2>
284
286
< li > 网上很多视频教程不够循序渐进,不成系统</ li >
285
287
</ ul >
286
288
< h2 id ="_4 "> 作者简介</ h2 >
287
- < p > 目前就职于 < a href ="https://www.zhihu.com/people/pegasus-wang/activities "> 知乎</ a > ,任后端工程师,多年 Python 开发经验。</ p >
289
+ < p > 曾就职于 < a href ="https://www.zhihu.com/people/pegasus-wang/activities "> 知乎</ a > ,任后端工程师,多年 Python 开发经验。</ p >
288
290
< p > 知乎专栏:</ p >
289
291
< ul >
290
292
< li > < a href ="https://zhuanlan.zhihu.com/c_85234576 "> 《Python 学习之路》</ a > </ li >
@@ -349,21 +351,25 @@ <h1 id="_9">预备知识</h1>
349
351
< li > 了解基本的数据结构和算法的概念,不适合< strong > 完全</ strong > 没有了解过算法的新手,更不适合 Python 基础都没掌握的同学。购买之前请慎重考虑</ li >
350
352
< li > 无需太多数学基础,仅在算法时间复杂度分析的时候会用到一些简单数学知识。对于学习基础算法,逻辑思维可能更重要一些</ li >
351
353
</ ul >
352
- < h2 id ="_10 "> 教材 </ h2 >
354
+ < h2 id ="_10 "> 参考教材和链接 </ h2 >
353
355
< p > 这里我参考过三本书,均可以网购纸质版或者网络上搜索电子版,建议大家先大致阅读一本教材掌握基本原理:</ p >
354
356
< p > < a href ="https://book.douban.com/subject/26979890/ "> 《算法图解》</ a > : 图解的形式很适合新手,示例使用的是 python。推荐基础较少的同学看这本书入门</ p >
355
357
< p > < a href ="https://book.douban.com/subject/10607365/ "> 《Data Structures and Algorithms in Python》</ a > : 适合对 Python
356
358
和算法比较熟悉的同学,或者是有其他语言编程经验的同学。本书是英文版,缺点是书中错误真的很多,代码有些无法运行而且不够 Pythonic。该书 < a href ="http://bcs.wiley.com/he-bcs/Books?action=resource&bcsId=9003&itemId=0470618299&resourceId=35653 "> 勘误</ a > </ p >
357
359
< p > < a href ="https://book.douban.com/subject/20432061/ "> 《算法导论》第三版</ a > : 喜欢数学证明和板砖书的同学可以参考,有很多高级主题。使用伪代码</ p >
358
- < h2 id ="_11 "> 讲课形式</ h2 >
360
+ < h2 id ="_11 "> 算法可视化</ h2 >
361
+ < p > 学习算法的过程中有时候会比较抽象,这里给大家推荐一些可视化的网站,方便更直观地理解:</ p >
362
+ < p > https://github.com/algorithm-visualizer/algorithm-visualizer</ p >
363
+ < p > https://www.cs.usfca.edu/~galles/visualization/Algorithms.html</ p >
364
+ < h2 id ="_12 "> 讲课形式</ h2 >
359
365
< p > 绘图演示+手写板+现场编码</ p >
360
366
< p > 我将使用绘图软件+手写板进行类似于纸笔形式的讲解,边讲边开个终端分成两个窗口,一个用 vim
361
367
编写代码,另一个窗口用来运行代码,所有代码我将会现场编写(还是很有挑战的)。
362
368
每个视频我会尽量控制时长,讲的内容尽量通俗易懂,摆脱学院派的授课方式。</ p >
363
369
< p > 你可以参考我在知乎发的专栏文章看下:</ p >
364
370
< p > < a href ="https://zhuanlan.zhihu.com/p/35175401 "> 那些年,我们一起跪过的算法题[视频]</ a > </ p >
365
371
< p > < a href ="https://zhuanlan.zhihu.com/p/35352024 "> 抱歉,我是开发,你居然让我写单测[视频]</ a > </ p >
366
- < h2 id ="_12 "> 课程特点</ h2 >
372
+ < h2 id ="_13 "> 课程特点</ h2 >
367
373
< ul >
368
374
< li > 每个算法和数据结构都有讲义、视频(包含讲解、图示、手动模拟)、源代码。其中只有视频内容为付费内容</ li >
369
375
< li > 讲义循序渐进,结合自己的学习和使用经验讲解。github 上实时更新</ li >
@@ -376,17 +382,17 @@ <h2 id="_12">课程特点</h2>
376
382
< li > 结合 cpython 底层实现讲解(比如list 内存分配策略等),避免一些使用上的坑。并且会用 python 来模拟内置 dict 等的实现</ li >
377
383
< li > 每篇讲义后有思考题和延伸阅读链接,帮助大家加深思考和理解。大部分题目答案都可以网络上搜索到</ li >
378
384
</ ul >
379
- < h2 id ="_13 "> 资料</ h2 >
385
+ < h2 id ="_14 "> 资料</ h2 >
380
386
< ul >
381
387
< li > 视频。包含所有讲解视频(网易公开课)</ li >
382
388
< li > 代码示例。所有代码我会放到 github 上。</ li >
383
389
< li > markdown 讲义,包含视频内容的提要等内容</ li >
384
390
< li > 延伸阅读。我会附上一些阅读资料方便想深入学习的同学</ li >
385
391
</ ul >
386
- < h2 id ="_14 "> 如何获取每章代码</ h2 >
392
+ < h2 id ="_15 "> 如何获取每章代码</ h2 >
387
393
< p > 注意每一章目录里都有 py 文件,在电子书里看不到。clone 下本代码仓库找到对应目录里的 python 文件即是每章涉及到的代码。
388
394
由于代码实现千差万别,本书代码实现具有一定的个人风格,不代表最佳实现,仅供参考。</ p >
389
- < h2 id ="_15 "> 如何学习</ h2 >
395
+ < h2 id ="_16 "> 如何学习</ h2 >
390
396
< p > 笔者讲课录制视频的过程也是自己再整理和学习的过程,录制视频之前需要参考很多资料
391
397
希望对所讲到的内容,你能够</ p >
392
398
< ul >
@@ -402,10 +408,10 @@ <h2 id="_15">如何学习</h2>
402
408
< li > 最好按照顺序循序渐进,每章都会有铺垫和联系,后边的章节可能会使用到前面提到的数据结构</ li >
403
409
< li > 根据自己的基础结合我列举的教材和视频学习,第一次理解不了的可以反复多看几次,多编写代码练习到熟练为止</ li >
404
410
</ ul >
405
- < h2 id ="_16 "> 课程目标</ h2 >
411
+ < h2 id ="_17 "> 课程目标</ h2 >
406
412
< p > 掌握基本的算法和数据结构原理,能独立使用 Python 语言实现,能在日常开发中灵活选用数据结构。
407
413
对于找工作的同学提升面试成功率。</ p >
408
- < h2 id ="_17 "> 开发和测试工具</ h2 >
414
+ < h2 id ="_18 "> 开发和测试工具</ h2 >
409
415
< p > 推荐使用以下工具进行开发,如果使用编辑器最好装对 应 Python 插件,笔者视频演示中使用了 vim,读者可以自己挑选自己喜欢的开发工具:</ p >
410
416
< ul >
411
417
< li > Pycharm</ li >
@@ -438,7 +444,7 @@ <h2 id="_17">开发和测试工具</h2>
438
444
</ code > </ pre >
439
445
440
446
< p > 然后在你的代码目录里头执行 < code > watchtest pytest -s somefile.py</ code > 一样的效果</ p >
441
- < h2 id ="_18 "> 测试用例设计</ h2 >
447
+ < h2 id ="_19 "> 测试用例设计</ h2 >
442
448
< p > 笔者在刚学习编程的时候总是忘记处理一些特例(尤其是动态语言可以传各种值),为了养成良好的编程和测试习惯,在编写单元测试用例的时候,
443
449
我们注意考虑下如下测试用例(等价类划分):</ p >
444
450
< ul >
@@ -483,7 +489,7 @@ <h2 id="_18">测试用例设计</h2>
483
489
484
490
< p > 当然我们也不用做的非常细致,要不然写测试是一件非常繁琐累人的事情,甚至有时候为了测试而测试,只是为了让单测覆盖率好看点。
485
491
当然如果是web应用用户输入,我们要假设所有的参数都是不可信的。 但是很多内部调用的函数我们基于约定来编程,如果你瞎传参数,那就是调用者的责任了。</ p >
486
- < h2 id ="_19 "> 勘误</ h2 >
492
+ < h2 id ="_20 "> 勘误</ h2 >
487
493
< p > 输出其实也是一种再学习的过程,中途需要查看大量资料、编写讲义、视频录制、代码编写等,难免有疏漏甚至错误之处。
488
494
有出版社找过笔者想让我出书,一来自己对出书兴趣不大,另外感觉书籍相对视频不够直观,有错误也不能及时修改,打算直接把所有文字内容讲义和代码等放到 github 上,供大家免费查阅。</ p >
489
495
< p > 如果你发现文字内容、代码内容、视频内容有错误或者有疑问,欢迎在 github 上提 issue 讨论(或者网易公开课评论区),或者直接提 Merge Request,我会尽量及时修正相关内容,防止对读者产生误导。
@@ -502,15 +508,15 @@ <h2 id="git">如何更新代码(写给不熟悉 git 的同学)</h2>
502
508
</ code > </ pre >
503
509
504
510
< p > 然后使用 < code > git pull pegasuswang master</ code > 拉取更新。</ p >
505
- < h2 id ="_20 "> 如何提问?</ h2 >
511
+ < h2 id ="_21 "> 如何提问?</ h2 >
506
512
< p > 如果读者关于代码、视频、讲义有任何疑问,欢迎一起讨论
507
513
请注意以下几点:</ p >
508
514
< ul >
509
515
< li > 优先在网易云课堂的讨论区提问,方便别的同学浏览。如果未购买视频,也可以直接在 github 里提出 issue,笔者有空会给大家解答和讨论。</ li >
510
516
< li > 描述尽量具体,视频或者代码哪一部分有问题?请尽量把涉及章节和代码贴出来,方便定位问题。</ li >
511
517
< li > 如果涉及到代码,提问时请保持代码的格式</ li >
512
518
</ ul >
513
- < h2 id ="_21 "> 本电子书制作和写作方式</ h2 >
519
+ < h2 id ="_22 "> 本电子书制作和写作方式</ h2 >
514
520
< p > 使用 mkdocs 和 markdown 构建,使用 Python-Markdown-Math 完成数学公式。
515
521
markdown 语法参考:http://xianbai.me/learn-md/article/about/readme.html</ p >
516
522
< p > 安装依赖:</ p >
@@ -581,5 +587,5 @@ <h2 id="_21">本电子书制作和写作方式</h2>
581
587
582
588
<!--
583
589
MkDocs version : 1.0.4
584
- Build Date UTC : 2019-01-09 03:17:34
590
+ Build Date UTC : 2019-08-20 02:53:03
585
591
-->
0 commit comments