关于python:在文本文件中编写列表的内容

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 s的坐标是否会产生所需的加速比,正如你提到的那样,这是一个稀疏矩阵。 考虑以下:

写入文件:

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))

可能还有进一步的优化,但实际上你应该看一下基于二进制的字段格式,以便你拥有如此庞大的数组。

特别是元帅似乎非常适合,但有更快的事情。