【笔记】Python算法教程(2)---树的实现、黑盒子
2017-07-03 09:52
337 查看
1、没有内置list类型的语言,还有另一种常见的树的实现方式,即采取“先子节点,后兄弟节点”的表示方法。每一个树节点都有两个用于引用其他节点的“指针”或属性。第一个引用指向的是当前节点的第一个子节点,第二个引用所指向的是其下一个兄弟节点。各个节点所应用的是一个(其子节点的)兄弟节点链表。
2、当树这样的数据结构被原型化时,往往是一个非常有用灵活的类型,允许我们在其构造器中设置任何属性。bunch设计模式。
bunch设计模式能让我们以命令行参数的形式创建相关对象,并设置任何属性;由于它继承自dict类,可以自然而然地获得大量相关的内容。
3、要注意两个地方:被隐藏的性能陷阱,即相关操作看起来似乎足够好了,但可能由一个线性操作变成平方级操作;第二个是指存在于各种浮点运算中的操作。
4、list:成员查询是线性级别的;往某个集合里面新加一个数,并且检查是否已被添加,这是平方级别
set:成员查询是常数级别;往某个集合里面新加一个数,并且检查是否已被添加,这是线性级别
双向队列(deque)优于在某个list首端插入对象
5、Python中有join()和os.path.join()两个函数,具体作用如下:
join(): 连接字符串数组。将字符串、元组、列表中的元素以指定的字符(分隔符)连接生成一个新的字符串
os.path.join(): 将多个路径组合后返回
join()函数
语法: 'sep'.join(seq)
参数说明:
sep:分隔符。可以为空
seq:要连接的元素序列、字符串、元组、字典
上面的语法即:以sep作为分隔符,将seq所有的元素合并成一个新的字符串
返回值:返回一个以分隔符sep连接各个元素后生成的字符串
6、Python的元组与列表类似,不同之处在于元组的元素不能修改。
元组使用小括号,列表使用方括号。
元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可。
创建空元组
tup1 = ();
元组中只包含一个元素时,需要在元素后面添加逗号
tup1 = (50,);
元组与字符串类似,下标索引从0开始,可以进行截取,组合等。
7、不要对浮点数进行等值比较。在需要进行这种运算的场合下,可以使用round函数。
还可以使用decimal模块,这样就使用的是精确的十进制浮点数表示法。
2、当树这样的数据结构被原型化时,往往是一个非常有用灵活的类型,允许我们在其构造器中设置任何属性。bunch设计模式。
bunch设计模式能让我们以命令行参数的形式创建相关对象,并设置任何属性;由于它继承自dict类,可以自然而然地获得大量相关的内容。
3、要注意两个地方:被隐藏的性能陷阱,即相关操作看起来似乎足够好了,但可能由一个线性操作变成平方级操作;第二个是指存在于各种浮点运算中的操作。
4、list:成员查询是线性级别的;往某个集合里面新加一个数,并且检查是否已被添加,这是平方级别
set:成员查询是常数级别;往某个集合里面新加一个数,并且检查是否已被添加,这是线性级别
双向队列(deque)优于在某个list首端插入对象
5、Python中有join()和os.path.join()两个函数,具体作用如下:
join(): 连接字符串数组。将字符串、元组、列表中的元素以指定的字符(分隔符)连接生成一个新的字符串
os.path.join(): 将多个路径组合后返回
join()函数
语法: 'sep'.join(seq)
参数说明:
sep:分隔符。可以为空
seq:要连接的元素序列、字符串、元组、字典
上面的语法即:以sep作为分隔符,将seq所有的元素合并成一个新的字符串
返回值:返回一个以分隔符sep连接各个元素后生成的字符串
元组使用小括号,列表使用方括号。
元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可。
创建空元组
tup1 = ();
元组中只包含一个元素时,需要在元素后面添加逗号
tup1 = (50,);
元组与字符串类似,下标索引从0开始,可以进行截取,组合等。
7、不要对浮点数进行等值比较。在需要进行这种运算的场合下,可以使用round函数。
还可以使用decimal模块,这样就使用的是精确的十进制浮点数表示法。
from decimal import * sum(Decimal("0.1") for i in range(10))==Decimal("1.0")
相关文章推荐
- 学习笔记——Kaggle_Digit Recognizer (KNN算法 Python实现)
- [笔记]BFS算法的python实现
- 学习笔记——Kaggle_Digit Recognizer (SVM算法 Python实现)
- 【笔记】Python算法教程(1)
- 在Python中实现贪婪排名算法的教程
- python机器学习案例教程――K最近邻算法的实现
- k-近邻算法 python实现(学习笔记no.1)
- 零基础Python教程:如何实现PCA算法
- 一个无聊男人的疯狂《数据结构与算法分析-C++描述》学习笔记 用C++/lua/python/bash的四重实现(7)习题2.8 随机数组的三种生成算法
- 笔记︱基于网络节点的node2vec、论文、算法python实现
- 一个无聊男人的疯狂《数据结构与算法分析-C++描述》学习笔记 用C++/lua/python/bash的四重实现(5)欧几里得算法欧几里得算法求最大公约数
- 优化算法--以Python实现(2)
- 操作系统学习笔记(8) 互斥和同步的实现算法
- PyCon 2011 - Hidden Treasures of the Python Standard Library - 模拟hmac摘要算法的实现
- 直接排序算法python实现
- 简明python教程自学笔记(1)
- Python笔记——排序算法的实现
- Python巧妙实现Fibonacci序列算法
- 简明python教程自学笔记(3)
- 基于python的分词算法的实现(2) - 字典的选择