如何使用缓冲区迭代字符串(python)

Tre*_*ent 3 python string iteration buffer

我正在尝试找到一些代码,给定一个字符串,允许我使用for循环结构迭代每一行,但是添加了要求,单独的for循环结构不会将迭代重置回到开头.

目前我有

sList = [line for line in theString.split(os.linesep)]
for line in SList
  ... do stuff
Run Code Online (Sandbox Code Playgroud)

但是,连续的for循环会将迭代重置回到开头.

python中是否存在某些内容,或者我是否必须从头开始编写?

Ale*_*lli 13

只需使用生成器表达式(genexp)而不是您现在使用的列表推导(listcomp) - 即:

sList = (line for line in theString.split(os.linesep))
Run Code Online (Sandbox Code Playgroud)

这就是全部 - 如果你对你的代码感到满意(通过os.linesep分割,即使Python中的普通文本I/O已经将它们翻译成\n......),你所需要做的就是使用括号(圆形的)而不是括号(方形),你将得到一个发电机而不是一个列表.

现在,每次你做一个for line in sList:,它将从前一个停止的地方开始(大概是因为a break) - 这就是你要求的,对吧?