如何使迭代器从特定索引开始?

时间:2013-12-27 20:29:26

标签: python string python-3.x iterator

我想在特定索引的字符串上使用迭代器,而不是使用切片。有没有办法做到这一点?我正在使用python 3.2

编辑: 我需要编写一个生成2个参数的生成器函数:迭代器上的迭代器由字符组成,可能是无限的,也可以是模式。 该函数需要返回迭代中模式的起始出现的索引。我为其余的问题命名了生成器g。 如果模式长度为m,则函数的效率应为O(m)

for exmaple:string:abababab,pattern:abab

所以我们会得到:

下(G)

0

下(G)

2

下(G)

4

1 个答案:

答案 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)运行;关于那个问题,我只是不知道。