2013-05-07 126 views
0

我有一个顶点列表和它们之间的长度。我想创建一个函数,通过搜索列表来查找列表中两个顶点之间的距离。使用X和Y值索引嵌套列表

名单看​​起来像:

lengths = [[X, Y, length], [X, Z, length], [Y, Z, length], etc] 

说顶点是X和Y我能指标采用X列表,Y找到X和Y之间的长度?

目前,我这样做是这样的:

def find_sides(X, Y, lengths): 
    for a in lengths: 
     if a[0] == X and a[1] == Y: 
      length = a[2] 
    return length 

但由于长度的名单不断增加,这可能需要一段时间。

感谢

回答

2

您可以使用字典:

lengths = {(X, Y): length, (X, Z): length, (Y, Z): length, ...} 

然后,它只是一个索引字典的事:

length = lengths[(X, Y)] 

您可以将您的当前目录与拟议的格式词典理解:

lengthDict = {(a, b): c for [a, b, c] in lengthList} 
+0

+1。但如果矩阵不稀疏,嵌套列表 - '长度= [[length1,..],..]'可能会更好。 – Elazar 2013-05-07 15:39:32

+0

我不确定你的意思 - 然而列表会自动从读入的值中填充,不知道创建字典与创建嵌套列表相比如何轻松 – 2013-05-07 15:42:52

+1

字典看起来是正确的,但要注意X和Y.如果它们已经是一个确切的类型,应该没问题,但如果它们是浮点数,那么在查找之前应该将它们舍入。 – 2013-05-07 15:49:33