2017-03-06 151 views
0

我一直在這個工作了一段時間,我不能從我編碼的循環得到我想要的迭代。代碼首先調用headerBody10()並將輸出附加到列表dist。列表中有兩列,dist中的第0列是FROM數據,第1列是TO數據。在追加dist列表時,它是一個列表列表。沒有得到我想要的迭代

我想查找FROM與TO類似的所有行數據,或者哪些道路有交叉點。我希望這段代碼通過所有的TO數據運行每個FROM,到目前爲止,我只有第一行的FROM在所有的TO行中運行。所以增量器m是FROM列,而n是TO列。所以問題是我如何讓FROM的每一行在TO的每一行都運行?

n = 0 
m = 0 
dist = [] 
match = [] 
for line in headerBody10(): 
    dist.append(line) 
try: 
    for data in dist: 
     for line in data: 
      if dist[n][1] in dist[m][0]: 
       match.append([dist[n][1],dist[m][0],n,m]) 
      else: 
       m = m + 1 
    n = n + 1 
except IndexError: 
    print match 

下面是一些採樣輸入:

26th St South, Jct 13th St South 
N-101 10th St, Jct 23rd St NE 
Central Ave, Interstate 15 
17Th St NE,   N-104 10th St N 
N-60 10th Ave S, End 4 lane 
Fox Farm Rd ,  Flood Road 

下面是最新的輸出,該輸出是從這麼不找到了匹配的else子句。 m正好迭代,但是在n可以迭代之前停止。

I-15 Gore Hill  Concrete 1 0 
I-15 Gore Hill  Fox Farm Rd 2 0 
I-15 Gore Hill  13th St South 3 0 
I-15 Gore Hill  23rd St NE 4 0 
I-15 Gore Hill  Intererstate 15 5 0 
I-15 Gore Hill  N-104 10th St N 6 0 
I-15 Gore Hill  4 lane 7 0 
I-15 Gore Hill  Flood Road 8 0 
I-15 Gore Hill  Division 9 0 
I-15 Gore Hill  6th St 10 0 
I-15 Gore Hill  Concrete 11 0 
+1

或者多維數組?那麼你是否想要所有匹配,其中n和m是相互之間的1個索引?也因爲你試圖迭代索引最好使用'爲我在範圍(0,N):對於範圍內的(0,米):' – Edward

+0

@愛德華我做了偏移,因爲我試圖比較一行到下一行。我想這樣做沒有意義了,不好改變它。 –

+0

給出一些輸出,也許你正在得到什麼,你想要 – Edward

回答

1

我只想拿出其他N,M初始化和迭代(添加)

for n in range(0,len(dist)): 
    for m in range(0,len(dist)): 
     if dist[n][1] in dist[m][0]: 
      match.append([dist[n][1],dist[m][0],n,m]) 
+1

也不需要'try'的異常處理,因爲它永遠不會超出對象的維度索引 – Edward