我需要读取一个文件的行,以这样的方式,将表现为一个移位寄存器与两个单元。 例如:
with open("filename", 'r') as file:
--first iteration--
present = line1
next = line2
do something
--second iteration--
present = line2
next = line3
do something
--third iteration--
present = line3
next = line 4
do someting
and so on....
它可以用open(file, 'r')
来完成,但不能保证文件会在脚本停止时关闭
由于在最后一次迭代之前“做点什么”的原因。你知道吗
有什么优雅的方法吗?你知道吗
Tim's answer和Blckknght's answer是好的。要添加到解决方案池,还可以使用deque:
更一般地,您可以创建一个生成器,从deque生成:
请注意,如果
iterable
中的值少于n
,则上述实现将生成一个空生成器。你知道吗当然可以:
蒂姆的回答很好。一个“更奇特”的解决方案是使用} docs 所示:
pairwise
配方,使用itertools.tee
,如^{tee
是一个非常简洁的函数。它可以在任何时候使用,你想迭代同一个iterable多次。如果您或多或少地并行地使用所有迭代器(而不是运行一个迭代以完成下一个迭代等等),那么它比将整个iterable转储到list
或其他可以反复迭代的容器中更节省空间。你知道吗基本上,您向它传递一个iterable对象,它返回许多独立的迭代器(默认情况下是两个)。最初的iterable只在处理返回的迭代器之前最远的迭代器所需的范围内进行升级。你知道吗
下面是一个
tee
演示,其中一个生成器在生成值之前打印消息:相关问题 更多 >
编程相关推荐