Writing the content of a list on a text file
本问题已经有最佳答案,请猛点这里访问。
我想在文本文件上写下列表的内容。
我目前这样做的方式如下:
1 2 3 4 | for k in li: outp.write(str(k)) out.write(' ') |
然而,这需要很长时间才能运行(我有数千万行)
有没有更快的方法?
样品线
列表来自稀疏矩阵,因此有很多零。 非null元素仅为1
例如,这样的列表:[0 0 0 0 0 0 0 1 0 0 1 1 1 0 0]
数字由制表符分隔
我想知道存储
写入文件:
1 2 3 4 5 6 7 | def writeMatrix(matrix): ones = [[i for i,num in row if num==1] for row in matrix] with open('path/to/file', 'w') as outfile: for row in ones: outfile.write(' '.join(str(i) for i in row)) outfile.write(' ') |
从文件中读取:
1 2 3 4 5 6 7 8 9 | def readMatrix(infilepath, width): answer = [] with open(infilepath) as infile: for line in infile: row = [None]*width for i in set(int(i) for i in line.split()): row[i] = 1 answer.append(row) return answer |
只需编写一次并省略所有这些手动演员,你应该能够获得相当不错的速度:
1 2 | out.write(' '.join(li)) |
可能还有进一步的优化,但实际上你应该看一下基于二进制的字段格式,以便你拥有如此庞大的数组。
特别是元帅似乎非常适合,但有更快的事情。