python - 我可以将文件视为python中的列表吗?
问题描述
这是一个问题,但我也只是希望我不必编写一堆代码来获得我想要的行为。(另外,如果它已经存在,它的运行速度可能比我写的要快。)我有许多无法放入内存的大型数字列表——至少不是同时存在的。这很好,因为我一次只需要每个列表的一小部分,而且我知道如何将列表保存到文件中并读出我需要的列表部分。问题是我这样做的方法有些低效,因为它涉及遍历文件以获得我想要的部分。所以,我想知道是否碰巧有一些库或我没有找到的东西允许我索引一个文件,就好像它是一个使用列表的列表[]
我熟悉的符号。由于我自己编写文件,因此我可以根据需要对它们进行格式化,但目前我的文件只包含列表的元素,并\n
作为值之间的分隔符。
只是为了回顾一下我在寻找什么/让它更具体。
- 我想使用列表索引表示法(包括切片到子列表和负索引)来访问写入文件的列表的内容
- 访问的子列表(例如
f[1:3]
)应该作为内存中的 python 列表对象返回 - 我希望能够分配给文件的索引(例如
f[i] = x
,应该将值写入与 index 对应的位置x
的文件)f
i
老实说,我不希望这种情况存在,但你永远不知道什么时候你会错过研究中的某些东西。所以,我想我会问。附带说明一下,如果这不存在,是否可以[]
在 python 中重载运算符?
解决方案
如果您的数据是纯数字的,您可以考虑使用numpy
数组,并以npy
格式存储数据。以这种格式存储后,您可以将内存映射文件加载为:
>>> X = np.load("some-file.npy", mmap_mode="r")
>>> X[1000:1003]
memmap([4, 5, 6])
此访问将直接从磁盘加载,无需加载前导数据。
推荐阅读
- mysql - 如何在 MySQL 自然全外连接中使用别名?
- dns - 正常挖掘的 DNS SERVFAIL 错误,但 +trace 没有错误
- java - 即使在明显的非零初始化之后,如何修复充满零的数组?
- php - Wordpress WPBakery 禁用 prettyPhoto 并使用响应式灯箱和图库
- dart - 将 http 响应转换为 Flutter 列表
- elasticsearch - 使用 elasticsearch 搜索准确的词条位置
- android - 错误无法在 Proguard Enabled 版本中实例化服务 com.google.firebase.iid.FirebaseInstanceIdService: java.lang.ClassNotFoundException-
- ios - MPCPlayerRequestErrorDomain Code=1000 "发送命令 0 失败"
- java - 正则表达式过滤跨度标签,如果它具有属性
- javascript - 进度条仅在第一次以角度 6 连续上传文件时显示