你好!请告诉我如何将多维列表写入文件,然后分段读取。同时,需要接收一个数组,而不是文本行。让我用一个与我的任务类似的例子来解释。有一个清单:
a = []
a.append([1,2,3,4,5])
a.append([11,12,13,14,15])
a.append([21,22,23,24,25]) # Таких строчек будет 30000
b = [10,20,30,40,50]
c = (a,b) # Таких строчек будет 1000000
print(c) # Здесь print(), а нужна запись в файл.
$([[1, 2, 3, 4, 5], [11, 12, 13, 14, 15], [21, 22, 23, 24, 25]], [10, 20, 30, 40, 50])
在一个循环中(for i in (1000000):) 写下这样的 kartezh(或数组 - 不是本质上),作为文件中的“with”是可取的。然后您需要从该文件中读取具有所需编号的行。同时,准确获取带有数字的列表非常重要,然后将其作为列表处理。例如:
z = файл[номер строчки из файла = с[i]] [0] # Получаем объект типа list
h = файл[номер строчки из файла = с[i]] [1] # Получаем объект типа list
如何在性能损失最小的情况下做到这一点?
1) 从文件中读取数据是一项耗时的操作,因此最好将所有内容读入变量并使用它。
2)如果数据量不允许将它们保存在内存中,那么将所有数据放在一个文件中也是一个坏主意。比如读取一个文件的第100行,必须先读取前面的99行。那些,每次访问文件时,将读取“额外”信息(索引较低的行)
3)为了避免不必要的读取(如p2)和不将数据保存在内存中(如p1)
,例如数据可以放在不同的文件中,而不是一个文件的不同行。为此,使用
pickle+ 类DataFile,它提供读取和写入具有特定索引的文件的功能。为了使用运算符访问数据文件[],您需要定义方法__setitem____getitem__下午好。您可以通过提供包含以下行的列表来解决您的问题:
使用 repr() 函数也可以:
要使用文件,您需要打开它们。如果文件不存在,将创建它(仅当文件未打开以供读取时)。您可以通过两种方式执行此操作:
这种处理文件的格式不会自动关闭它,因此在处理完它后,您需要关闭它:
这种工作格式会自动关闭文件并允许您一次打开多个文件:
当然,以后再编入索引是不可能的。而且,一般来说,最好使用像 pandas 这样的专门库和像 csv 或 json 这样的数据格式来处理数据。但如果你真的想使用基本工具,那么我可以提供这个录制选项:
因此,在每一行我们写:
然后,将行输入作为输入,我们可以通过对它们应用 split(' ') 函数并从每一行获取以下形式的数组来恢复原始数组:
好吧,接下来就看小事了:正确组装数组,引用每一行数组的元素。
如果不是因为读取文件的问题,一切都会好起来的。我正在绞尽脑汁研究如何不连续读出所有行,而是只读出正确的数字。那些。您需要键入一个包含特定数字的新行数组。台词不顺……那我还想什么呢。问题仍然没有完全解决:(
评论里,代码看起来不太好,所以我会写在答案里。
这里我们创建一个多维数组:
这里我们将它写入一个文件:
这里我们从文件中读取一个多维数组并输出一些值:
PS 了解索引
更新程序
最后更新和最后回复。如果文件包含需要组装成多维数组的数组,可以这样做:
因此,您可以将任何一维数组转换为一维数组(这对每个人和未来都是如此):