Lista de listas de salida 2 dim array ‘a archivo de texto en python

Pregunta simple: estoy creando una matriz de dos dim ( ddist = [[0]*d for _ in [0]*d] ) usando las listas en el código a continuación. Produce distancia utilizando datos gis. Solo quiero una forma sencilla de tomar el resultado de mi matriz / lista y enviarlo a un archivo de texto manteniendo la misma estructura N * N. He usado resultados de declaraciones impresas en el pasado, pero no es una buena solución en este caso.

Soy nuevo en Python a través de SAS.

 def match_bg(): #as the name suggests this function will match the variations of blockgroups with grid travel time. Then output into two arras time and distance. count = -1 countwo = -1 ctime = -1 ddist = [[0]*d for _ in [0]*d] #cratesan N*N array list dtime = -1 while count < 10: count = count +1 #j[count][7] = float(j[count][7]) #j[count][6] = float(j[count][6]) while countwo < d: countwo = countwo+1 if count < 1: #change values in bg file j[countwo][7] = float(j[countwo][7]) j[countwo][6] = float(j[countwo][6]) #print j[count], j[countwo] while ctime < RowsT: #print ctime, lenth, t[ctime][0], count, countwo ctime = ctime + 1 #takes both verations of big zone which should be end of the file and matches to travetime file - note 0 and 1 for t[] should be same for different files if ((j[count][lenth-1] == t[ctime][0]) and (j[countwo][lenth-1] == t[ctime][1])) or ((j[countwo][lenth-1] == t[ctime][0]) and (j[count][lenth-1] == t[ctime][1])): if t[ctime][0] != t[ctime][1]: #jkdljf x1=3963*j[count][7]*(math.pi/180) x2=3963*j[countwo][7]*(math.pi/180) y1=math.cos(j[count][6]*math.pi/180)*3963*j[count][7]*(math.pi/180) y2=math.cos(j[countwo][6]*math.pi/180)*3963*j[countwo][7]*(math.pi/180) dist=math.sqrt(pow(( x1-x2), 2) + pow((y1-y2), 2)) dtime = dist/t[ctime][11] print countwo, count ddist[count-1][countwo-1] = dist/t[ctime][lenth] print dtime, "ajusted time", "not same grid" print elif j[count][5] != j[countwo][5]: #ljdkjfs x1=3963*j[count][7]*(math.pi/180) x2=3963*j[countwo][7]*(math.pi/180) y1=math.cos(j[count][6]*math.pi/180)*3963*j[count][7]*(math.pi/180) y2=math.cos(j[countwo][6]*math.pi/180)*3963*j[countwo][7]*(math.pi/180) dist=math.sqrt(pow(( x1-x2), 2) + pow((y1-y2), 2)) # could change to calculation dtime = (dist/.65)/(t[ctime][10]/60.0) print dtime, dist, "not in the same bg", j[count], j[countwo], t[ctime] elif j[count][5] == j[countwo][5]: if t[count][7] < 3000000: dtime = 3 elif t[count][7] < 20000000: dtime = 8 else: dtime = 12 print dtime, "same bg" print t[ctime][0], t[ctime], 1, j[count], j[countwo] else: print "error is skip logic", j[count], j[countwo], t[ctime] break #elif (j[countwo][lenth-1] == t[ctime][0]) and (j[count][lenth-1] == t[ctime][1]): #print t[ctime][0], t[ctime], 2, j[count], j[countwo] #break ctime = -1 countwo = -1 

eso es lo que podría hacer para generar su lista 2-d (o cualquier lista 2d para esa materia):

 with open(outfile, 'w') as file: file.writelines('\t'.join(str(j) for j in i) + '\n' for i in top_list)