gpt4 book ai didi

Python For...循环迭代

转载 作者:太空宇宙 更新时间:2023-11-04 07:03:04 26 4
gpt4 key购买 nike

好的,我有这个程序以 Newick 格式稀疏代码,它提取名称和距离以用于系统发育 TreeMap 中。我的问题是,在这个代码分支中,当程序读取 newickNode 函数时,它将名称和距离分配给“节点”变量,然后将其返回到要打印的“节点”类中,但似乎只打印第一个节点“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()

谢谢!

最佳答案

你可以把它变成一个生成器:

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()

生成器将一次返回一个节点并在函数内暂停,然后在您需要下一个节点时恢复。

或者把它们保存起来然后归还

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

关于Python For...循环迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11195374/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com