Переменная внутри для l oop будет новым итератором для внешнего l oop Python - PullRequest
0 голосов
/ 11 марта 2020

Предположим, у меня есть следующий пример кода:

element = xmlDoc.find("...") # this returns an element that is found within an XML document
for child in element.getchildren():
    # iterate over each child
    # do some stuff
    if some_condition: # assume that at some point in the loop, this condition is executed
        element = xmlDoc.find("..." # find a new element in the doc and this element should be the new element to iterate over from the next loop

Это, очевидно, очень теоретически на данный момент. То, что я пытаюсь сделать, это начать все oop, просматривая каждый дочерний узел определенного узла "элемент". Однако, если выполняется some_condition (что будет в какой-то момент в моем коде), то я бы хотел, чтобы в следующей итерации l oop использовалась новая переменная "element" в этом операторе if. Поэтому я ожидал бы, что следующая итерация l oop будет l oop по каждому дочернему узлу "нового" элемента, а не по той, которая была начата с первой итерации

. Есть ли способ что я могу сделать это?

1 Ответ

2 голосов
/ 11 марта 2020

Я думаю, это то, что вы ищете:

sequence = iter(xmlDoc.find("...").getchildren())
while True:
    try:
        element = next(sequence)
    except StopIteration:
        break
    # handle element ...
    if some_condition:
        sequence = iter(xmlDoc.find("...").getchildren())
...