【问题标题】:Output 2 dim array 'list of lists" to text file in python将 2 暗淡数组“列表列表”输出到 python 中的文本文件
【发布时间】:2009-06-17 21:49:26
【问题描述】:

简单的问题 - 我正在使用下面代码中的列表创建一个两个暗淡的数组 (ddist = [[0]*d for _ in [0]*d])。它使用 gis 数据输出距离。我只想要一种简单的方法来获取我的数组/列表的结果并输出到一个保持相同 N*N 结构的文本文件。我过去曾使用过 print 语句的输出,但在这种情况下不是一个好的解决方案。

我是通过 SAS 接触 python 的新手。

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

【问题讨论】:

  • 请将所有代码缩进四个空格,以便正确格式化。对于第一句中的代码,您需要用反引号字符 (`) 对其进行分隔。
  • 天哪,这段代码与将输出写入文件有什么关系?

标签: python list text


【解决方案1】:

这就是您可以输出二维列表(或任何二维列表)的方法:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-13
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    • 2020-07-31
    相关资源
    最近更新 更多