2009-06-17 4 views
3

Question simple - Je crée un tableau de deux dim (ddist = [[0]*d for _ in [0]*d]) en utilisant les listes dans le code ci-dessous, il affiche la distance en utilisant les données gis. pour prendre le résultat de mon tableau/liste et sortie dans un fichier texte en gardant la même structure N * N. J'ai utilisé la sortie des instructions d'impression dans le passé, mais pas une bonne solution dans ce casSortie 2 dim array 'liste de listes' en fichier texte en python

Je suis nouveau à python par la 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 
+0

Veuillez mettre en retrait tout le code de quatre espaces afin qu'il puisse être formaté correctement. Pour le code de votre première phrase, vous devez le délimiter avec le caractère de retour ('). –

+0

Oh mon dieu, comment ce code est-il pertinent pour écrire une sortie dans le fichier? – SilentGhost

Répondre

4

que ce que vous pouvez sortir votre liste 2d (ou une liste 2d pour cette question).

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