python 多叉树 import treelib / class 'generator' 的处理方法
2020-03-15 18:23
2606 查看
python 多叉树 import treelib / class 'generator' 的处理方法
知识: 多叉树 import treelib
最近做项目用到python里多叉树的包,十分方便。
- 安装
# windows pip install treelib # linux sudo easy_install -U treelib
# 示例: import treelib from treelib import Tree, Node class Nodex(object): def __init__(self,x,y): self.sit = [x,y] tree = Tree() tree.create_node('a', 1, data = Nodex(1,1)) tree.create_node('b', 2, parent = 1, data = Nodex(1,2)) tree.create_node('c', 3, parent = 1, data = Nodex(1,3)) tree.create_node('d', 4, parent = 2, data = Nodex(3,4)) tree.show() tree.show(data_property = 'sit') #按data里的sit变量显示
#输出: a ├── b │ └── d └── c [1, 1] ├── [1, 2] │ └── [3, 4] └── [1, 3]
知识: 生成器 generator
treelib里有个函数rsearch(nid, filter=None),它的作用是找到该节点到根的路径。
rsearch(nid, filter=None) # Traverse the tree branch along the branch from nid to its ancestors (until root). # Parameters:filter – the function of one variable to act on the Node object.
但是我们直接调用会发现,这个函数返回值并不是list,而是<class ‘generator’>
a=tree.rsearch(4, filter=None) print(a) print(type(a))
#输出 <generator object Tree.rsearch at 0x0000000004F8D2C8> <class 'generator'>
因为generator是按需生成并“返回”结果,而不是一次性产生所有的返回值,甚至有时候根本就不知道所有的返回值。
generator保存的是算法,每次调用next(),就计算出下一个元素的值,直到计算到最后一个元素,没有更多的元素时,抛出StopIteration的错误。
若要打印出rsearch(nid, filter=None)的结果,则需采用生成器的处理方法。
a=tree.rsearch(4, filter=None) p=[] while True: try: p.append(next(a)) except StopIteration as e: break print(p)
#输出 [4, 2, 1]
本博客为原创作品,欢迎指导,转载请说明出处,附上本文链接,谢谢
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- Android 开发中代码包(lib/jar/class)使用(import/export)方法
- iOS-IM From XMPP.2 工程配置、#import <libxml/tree.h>、 @import libxmlSimu 错误处理
- Python 动态导入对象,importlib.import_module()的使用方法
- cjson libcurl 发送请求给python 接受数据和处理数据 参考了一下别人的方法
- Python Treelib 多叉树 数据结构 中文使用帮助文档
- python中文处理好方法
- Python httplib,smtplib使用方法
- gzip 压缩格式的网站处理方法---sina.com 分类: python python基础学习 2013-07-16 17:40 362人阅读 评论(0) 收藏
- Python strip lstrip rstrip使用方法(字符串处理空格)
- Python 处理管道的方法
- Python中针对函数处理的特殊方法
- 关于so硬链接至/usr/lib及/usr/local/lib下的处理方法
- python htmllib.HTMLParser处理A标签获取链接和描述
- libpython2.7.so.1.0 cannot open的解决方法
- libxml/HTMLparser.h file not found 解决方法 (libxml.dylib错误处理)
- 忘记ftp密码使用python ftplib库暴力破解密码的方法示例
- Android“This Handler class should be static or leaks might occur”警告的处理方法
- python的 import模块使用方法
- 服务器配置python时一些问题的处理方法
- NERDTree 和 Efficient python folding冲突解决方法