可以在Python中重置迭代器吗?

可以在Python中重置迭代器吗?,第1张

可以在Python中重置迭代器吗?

我看到很多建议itertools.tee的答案,但这忽略了文档中的一项重要警告:

此itertool可能需要大量辅助存储(取决于需要存储多少临时数据)。一般来说,如果一个迭代器使用大部分或全部的数据的另一个前开始迭代器,它是更快地使用

list()
代替
tee()

基本上,

tee
是专为那些在两个(或更多)一个迭代器的克隆,而相互“同步失控”,不这样做的情况 由多
-相反,他们在相同的“附近”说(一彼此后面或前面的几个项目)。不适合OP的“从头开始重做”问题。

L =list(DictReader(...))
另一方面,只要字典列表可以舒适地存储在内存中,就非常适合。可以随时使用制作新的“从头开始的迭代器”(非常轻巧且开销低)
iter(L)
,并且可以部分或全部使用它,而不会影响新的或现有的迭代器;其他访问模式也很容易获得。

正如正确回答的几个答案所述,在特定情况下,

csv
您还可以
.seek(0)
使用基础文件对象(一种特殊情况)。我不确定它是否已记录在案并得到保证,尽管目前可以使用。仅对真正巨大的csv文件可能值得考虑,
list
我建议在其中使用通用方法,因为一般方法的内存占用量太大。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5640252.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存