很难理解python代码的缩写形式
我在读文件时遇到了这两行。我不太明白它到底是什么意思。此处节点、边、头节点ID、尾节点ID是列表。我真的很感谢你的帮助很难理解python代码的缩写形式,python,Python,我在读文件时遇到了这两行。我不太明白它到底是什么意思。此处节点、边、头节点ID、尾节点ID是列表。我真的很感谢你的帮助 def addInEdge( self, edge ): self.inEdges.append( edge ) self.totalEdgeCapacity += edge.capacity def addOutEdge( self, edge ): self.outEdges.append( edge ) self
def addInEdge( self, edge ):
self.inEdges.append( edge )
self.totalEdgeCapacity += edge.capacity
def addOutEdge( self, edge ):
self.outEdges.append( edge )
self.totalEdgeCapacity += edge.capacity
def addEdge(self, edge):
self.edges.append( edge )
self.nodes[ edge.headNodeId ].addInEdge( edge )
self.nodes[ edge.tailNodeId ].addOutEdge( edge )
nodes[ edges[-1].headNodeId ].addInEdge( edges[-1] )
nodes[ edges[-1].tailNodeId ].addOutEdge( edges[-1] )
你想得太多了,弄糊涂了。这似乎是一个有向图的表示:它看起来像
edges
是一个边列表,每条边都有一个headNodeId
和一个tailNodeId
。这些ID中的每一个都指向节点
列表中的一个节点
因此,当您说nodes[edges[-1].headNodeId]
时,所发生的一切就是“给我“nodes”中的项目,其索引是“edges”中最后一个项目的头节点ID”。然后,代码只是在该节点上调用addInEdge
更详细的版本是:
last_edge = edges[-1]
head_node_id = last_edge.headNodeId
head_node = nodes[head_node_id]
last_edge.addInEdge(head_node)
tail_node_id = last_edge.tailNodeId
tail_node = nodes[tail_node_id]
last_edge.addOutEdge(tail_node)
是不是让你困惑的
[-1]
?例如,见。您确定您的意思是headNodeId
和tailNodeId
是列表吗?[-1]
获取列表的最后一个元素[-2]
获取倒数第二个,依此类推…@keyser list[list]语法令人困惑。你能帮我理解那件事吗?我很抱歉。这些不是列表,而是没有顺序的数字。我从xml文件中读取它们,这样它们就不是列表了?看起来你有了list[index]
语法。我真的不理解你的困惑。方括号之间的任何东西都是一个表达式。这可以是一个简单的索引号(5
),也可以是另一个变量(current_index
)或列表对象查找的结果edges[-1]。headNodeId
获取edges
中的最后一个对象,并引用该对象上的headNodeId
属性。这是一个表达式,其结果用于索引节点[]
。啊……好的……我知道了。谢谢你,丹尼尔。真的消除了我心中的困惑。非常感谢。你能给我指出一些我也能找到这种有向图表示的来源吗?你好,Daniel,当我尝试使用addInEdge和addOutEdge方法将边添加到列表InEdge,OutEdge时,我得到一个错误,说python work.py--output topology.xml--xml germany50.xml Traceback(最近一次调用last):File“work.py”,第307行,主(sys.argv[1:])文件“work.py”,第300行,主节点[edges[-1].SourceID].addInEdge(edges[-1])AttributeError:“unicode”对象没有属性“addInEdge”
。我正在提供指向我正在处理的文件的链接。您能帮我解决这个问题吗?[你应该问一个新问题,然后发布显示问题的代码的精简版本。我真的希望我可以,但我的问题似乎被否决了,所以我不能再问另一个问题,但这对我来说非常重要,我已经尝试了一个多星期的各种东西,但没有找到根本原因。我我相信这就是问题的原因,我对这些类也不太在行。nodes[edges[-1].headNodeId].addInEdge(edges[-1])nodes[edges[-1].tailNodeId].addOutEdge(edges[-1])