我想在特定索引的字符串上使用迭代器,而不是使用切片。有没有办法做到这一点?我正在使用python 3.2
编辑: 我需要编写一个生成2个参数的生成器函数:迭代器上的迭代器由字符组成,可能是无限的,也可以是模式。 该函数需要返回迭代中模式的起始出现的索引。我为其余的问题命名了生成器g。 如果模式长度为m,则函数的效率应为O(m)
for exmaple:string:abababab,pattern:abab
所以我们会得到:
下(G)
0
下(G)
2
下(G)
4
答案 0 :(得分:0)
以下生成器函数将返回您请求的输出:
def geniter(instring, pattern):
start=0
while start < len(instring):
nxtidx = instring.find(pattern, start)
if nxtidx != -1:
yield nxtidx
start = nxtidx + 1
else:
start = len(instring)
您可以使用:g = geniter('abababab', 'abab')
调用它,然后使用重复调用next(g)
进行迭代。我认为不一定能保证它能以效率O(m)运行;关于那个问题,我只是不知道。