gpt4 book ai didi

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

转载 作者:IT老高 更新时间:2023-10-28 21:06:51 26 4
gpt4 key购买 nike

我可以在 Python 中重置迭代器/生成器吗?我正在使用 DictReader 并希望将其重置为文件的开头。

最佳答案

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

This itertool may require significant auxiliary storage (depending on how much temporary data needs to be stored). In general, if one iterator uses most or all of the data before another iterator starts, it is faster to use list() instead of tee().

基本上,tee 是为这样的情况设计的 - 相反,他们说的是同一个“附近”(一些项目彼此落后或领先)。不适合OP的“从头重做”的问题。

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

正如几个答案正确指出的那样,在 csv 的特定情况下,您还可以 .seek(0) 底层文件对象(一种相当特殊的情况)。尽管目前确实有效,但我不确定是否已记录并保证。仅对于真正巨大的 csv 文件可能值得考虑,其中我推荐的 list 因为一般方法会占用太大的内存。

关于python - 可以在 Python 中重置迭代器吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3266180/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com