iterator迭代器

迭代是Python最强大的功能之一,是访问集合元素的一种方式。

迭代器iterator是一个可以记住遍历的位置的对象。

常见问题

iterator对象被访问过一次后,就无效了,值就变成空了

比如对于下面的代码

    matchIterator = re.finditer(singleScriptPattern, allLine, flags=re.I | re.M | re.DOTALL)
    print("matchIterator=%s" % matchIterator)
    if matchIterator:
      for scriptNum, eachScriptMatch in enumerate(matchIterator):
        print("[%d] eachScriptMatch=%s" % (scriptNum, eachScriptMatch))
        singleScript = eachScriptMatch.group("singleScript")
        print("singleScript=%s" % singleScript)

其中的:

if matchIterator:

本意是:

判断re.finditer不为空,然后后续用for循环获取每个值

结果却变成了:

if去判断matchIterator后,就是对matchIterator的一次操作,然后iterator类型的matchIterator的值就变成空了

python_iterator_value_empty

就无效了。

->后续代码当然也就不起效果了。

results matching ""

    No results matching ""