métodos multi-árbol de importación pitón treelib / clase 'generador' de procesamiento

métodos multi-árbol de importación pitón treelib / clase 'generador' de procesamiento


conocimiento: Multi-árbol treelib importación

Un reciente proyecto utiliza múltiples paquete python en el tenedor del árbol, es muy conveniente.

  1. instalar
# windows
pip install treelib
# linux
sudo easy_install -U treelib
  1. El uso oficial de la función de llamada Descripción: https://treelib.readthedocs.io/en/latest/treelib.html?
# 示例:
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]

conocimiento: generador generador

Existen funciones treelib RSEARCH (NID, filtro = None), su papel es encontrar la ruta al nodo raíz.

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.

Sin embargo, nos encontraremos con una llamada directa, esta función devuelve un valor no lista, pero <clase 'generador'>

a=tree.rsearch(4, filter=None)
print(a)
print(type(a))
#输出
<generator object Tree.rsearch at 0x0000000004F8D2C8>
<class 'generator'>

Debido a que el generador se genera en la demanda y los resultados de "retorno", en lugar de una sola vez produce todos los valores de retorno, ya veces simplemente no saben todos los valores de retorno.
generador se almacena algoritmo, cada llamada a la siguiente () , para calcular el valor del elemento siguiente, para calcular el tiempo hasta que el último elemento, no hay más elementos, a un tiro StopIteration errores.

Para imprimir los resultados RSEARCH (NID, filtro = None), es necesario utilizar el método de procesamiento de un productor.

a=tree.rsearch(4, filter=None)
p=[]
while True:
    try:
        p.append(next(a))
    except StopIteration as e:
        break
print(p)
#输出
[4, 2, 1]

Este blog es una obra original, dio la bienvenida a la guía, reproduce, por favor indique la fuente, adjuntar un enlace a este artículo, gracias

Publicado 20 artículos originales · ganado elogios 1 · visitas 203

Supongo que te gusta

Origin blog.csdn.net/weixin_43973433/article/details/104861405
Recomendado
Clasificación