![b78056d9c3754e98bba90d6449cb17c2.png](https://i-blog.csdnimg.cn/blog_migrate/5a4d43548520b12ba88b4884c7c42710.png)
ToyData库简介
以Data Structures and Algorithms in Python, Michael T. Goodrich为主要的参考书,将书中的代码整理到一个Python库中。主要为了方便数据结构的学习。
- Github地址:https://github.com/shenxiangzhuang/ToyData
- Pypi地址:ToyData
- 文档地址:Welcome to ToyData’s documentation!
安装
pip install ToyData
注意,如果已经把pip源换成国内的了,需要指定官方源安装
pip install ToyData -i https://pypi.org/simple
使用
建议安装库,看书,然后直接调用看结果,之后看源码,再后面可以自己手动写出来看看。
安装后可以直接调用看结果, 编写hello.py文件:
from toydata.Stack import ArrayStack
s = ArrayStack()
s.push(1)
s.push(2)
s.push(3)
print('依次push 1,2,3后:')
print(s)
s.pop()
print('pop一次后:')
print(s)
之后终端执行
python hello.py
输出:
依次push 1,2,3后:
| 3 |
---------
| 2 |
---------
| 1 |
---------
pop一次后:
| 2 |
---------
| 1 |
---------
![5bdd621392e109edd26e08699bf24c8e.png](https://i-blog.csdnimg.cn/blog_migrate/8c9bc94874cd81044f388467b6cd002b.jpeg)
![2dbbf1440d7d45a65d7a15f28588cd53.png](https://i-blog.csdnimg.cn/blog_migrate/566352ec7c155427ba68ffe884fa21c8.jpeg)
目前还没有给出单独的调用示例,不过都是很简单的,实在不知道可以去Github的test文件夹下看看怎么调用的。(不会写测试...都是随便写一下,不出现什么大的错误就行吧)
碎碎念
个人而言,学习数据结构时有几个问题是我一直很关心,但在很多书上不能很快找出答案的,比如说:
- 树到底是什么?
- Hash碰撞怎么解决呢?意思大概明白,想知道具体怎么写呢?
- 那些经常调用的库,比如
collections.deque
我怎么从头写一个类似的?
其实第一个问题就是搞不清ADT和具体实现的区别;第二个问题是对细节的理解不深入;第三个问题是对API的整体设计不太清楚。我认为这些问题在真正去手动实现一遍后会好很多。
其他
- 为什么用Python?非科班,主要用Python, Cpp用的不多
- 代码全是书上的吗?大部分是,做了部分修改
- 测试和文档都太烂了?不会写,真的不会,太菜了Orz
- 书上都有了为什么还有搞成库?强迫症喜欢整整齐齐