python multi-tree import treelib / classe 'générateur' méthodes de traitement

python multi-tree import treelib / classe 'générateur' méthodes de traitement


connaissances: treelib import multi-arbre

Un récent projet utilise python multi-package dans la fourche de l'arbre, est très pratique.

  1. installer
# windows
pip install treelib
# linux
sudo easy_install -U treelib
  1. L'utilisation officielle de l'appel fonction Description: 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]

connaissances: générateur générateur

Là fonctions treelib Rsearch (JNV, filtre = None), son rôle est de trouver le chemin vers le nœud racine.

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.

Mais nous trouverons un appel direct, cette fonction retourne une valeur non liste, mais <class « générateur »>

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

Parce que le générateur est généré sur la demande et les résultats « retour », au lieu d'une seule fois produit toutes les valeurs de retour, et parfois ne savent tout simplement pas toutes les valeurs de retour.
générateur est stocké algorithme, chaque appel à la suivante () , pour calculer la valeur de l'élément suivant, pour calculer le temps jusqu'à ce que le dernier élément, pas d'éléments, lancer StopIteration erreurs.

Pour imprimer les résultats Rsearch (JNV, filtre = None), vous devez utiliser la méthode de traitement d'un producteur.

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

Ce blog est une œuvre originale, a salué la direction, reproduit, s'il vous plaît indiquer la source, joindre un lien vers cet article, je vous remercie

Publié 20 articles originaux · louange gagné 1 · vues 203

Je suppose que tu aimes

Origine blog.csdn.net/weixin_43973433/article/details/104861405
conseillé
Classement