Sea*_*ean 1 python string loops list
好吧,我有这个程序以Newick格式稀疏代码,它提取一个名称,以及在系统发生树图中使用的距离.我的问题是,在这个代码分支中,当程序通过newickNode函数读取时,它将名称和距离分配给'node'变量,然后将其返回到'Node'类中进行打印,但似乎只打印第一个节点'A',然后跳过另一个节点3.
无论如何要在newickNode中完成for循环读取其他3个节点并用第一个节点打印出来吗?
class Node:
def __init__(self, name, distance, parent=None):
self.name = name
self.distance = distance
self.children = []
self.parent = parent
def displayNode(self):
print "Name:",self.name,",Distance:",self.distance,",Children:",self.children,",Parent:",self.parent
def newickNode(newickString, parent=None):
String = newickString[1:-1].split(',')
for x in String:
splitString = x.split(':')
nodeName = splitString[0]
nodeDistance = float(splitString[1])
node = Node(nodeName, nodeDistance, parent)
return node
Node1 = newickNode('(A:0.1,B:0.2,C:0.3,D:0.4)')
Node1.displayNode()
Run Code Online (Sandbox Code Playgroud)
谢谢!
你可以把它变成一个发电机:
def newickNode(newickString, parent=None):
String = newickString[1:-1].split(',')
for x in String:
splitString = x.split(':')
nodeName = splitString[0]
nodeDistance = float(splitString[1])
node = Node(nodeName, nodeDistance, parent)
yield node
for node in newickNode('(A:0.1,B:0.2,C:0.3,D:0.4)'):
node.displayNode()
Run Code Online (Sandbox Code Playgroud)
生成器将一次返回一个节点并在函数内暂停,然后在您想要下一个节点时恢复.
或者只是保存它们并返回它们
def newickNode(newickString, parent=None):
String = newickString[1:-1].split(',')
nodes = []
for x in String:
splitString = x.split(':')
nodeName = splitString[0]
nodeDistance = float(splitString[1])
node = Node(nodeName, nodeDistance, parent)
nodes.append(node)
return nodes
Run Code Online (Sandbox Code Playgroud)