循环中的CSV写入

11 投票
1 回答
64465 浏览
提问于 2025-04-17 06:02
import csv
a=[]
with open('large.csv','w') as f1:
    writer=csv.writer(f1, delimiter='\t',lineterminator='\n',)

    for i in range(1000000):
        for j in range(i+1):
            a.append(i+j*0.2)
            #print i,j,a
        #want to write into same csv file???
        '''like            
               0     1     2......999999
            0  0.0
            1  1.0  1.2
            2  2.0  2.2   2.4
            .   .....
            .   .....
            999999
        ''' 
        a=[]

我这样做是为了避免重复计算,因为列表'a'会变得很大,所以我需要在外层循环的一次迭代后重新初始化它。因此,我想把这个列表(在重新初始化之前)以上述方式写入csv文件,但我不知道怎么做……请帮帮我。

1 个回答

23

你想做这样的事情吗?

import csv
with open('large.csv','w') as f1:
    writer=csv.writer(f1, delimiter='\t',lineterminator='\n',)
    for i in range(1000000):
        row = [i + j*0.2 for j in range(i+1)]
        writer.writerow(row)

或者也可以加上行和列的标题:

import csv
with open('large.csv','w') as f1:
    writer=csv.writer(f1, delimiter='\t',lineterminator='\n',)
    writer.writerow([''] + range(1000000))
    for i in range(1000000):
        row = [i] + [i + j*0.2 for j in range(i+1)]
        writer.writerow(row)

后者会返回以下文件(我把1000000换成了10):

        0       1       2       3       4       5       6       7       8       9
0       0.0
1       1.0     1.2
2       2.0     2.2     2.4
3       3.0     3.2     3.4     3.6
4       4.0     4.2     4.4     4.6     4.8
5       5.0     5.2     5.4     5.6     5.8     6.0
6       6.0     6.2     6.4     6.6     6.8     7.0     7.2
7       7.0     7.2     7.4     7.6     7.8     8.0     8.2     8.4
8       8.0     8.2     8.4     8.6     8.8     9.0     9.2     9.4     9.6
9       9.0     9.2     9.4     9.6     9.8     10.0    10.2    10.4    10.6    10.8

撰写回答