Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/grails/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
很难理解python代码的缩写形式_Python - Fatal编程技术网

很难理解python代码的缩写形式

很难理解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

我在读文件时遇到了这两行。我不太明白它到底是什么意思。此处节点、边、头节点ID、尾节点ID是列表。我真的很感谢你的帮助

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