需要有关循环的建议。
我有一个元素数组。
我需要遍历数组并检查每个元素的正则表达式。如果元素与正则表达式匹配,我将调用一个函数,该函数将返回新的元素数组。然后,在继续迭代之前,我应该遍历这组新元素,并执行相同的过程。这就像在树中进行深度优先搜索。
似乎我需要使用“ while”循环,但是我无法弄清楚逻辑。
例如:
def get_elements(element):
#some code
return elements
def loop_through_elements(elements):
for element in elements:
if re.search("myRegExp", element):
elements = get_elements(element);
else:
return element
答案 0 :(得分:0)
如果我们假设每个元素都是字符串或可交互的类型(例如列表),则可以使用递归来解决此问题:
def examine_element(element):
""" Examine a single element
"""
if re.search("myREgExp", element):
pass # TODO
def examine_each_element(elements):
""" Examine all elements recursively
"""
for element in elements:
if isinstance(str, element):
# This element is a single element
examine_element(element)
else:
# This element represents multiple elements
examine_each_element(elements)
请注意,此方法有一些限制,请注意:
答案 1 :(得分:0)
您可以尝试使用递归函数,并在其定义内调用“ loop_through_elements(elements)”。
def loop_through_elements(elements):
for element in elements:
if re.search("myRegExp", element):
loop_through_elements(get_elements(element))
else:
return element
答案 2 :(得分:0)
如果要对元素进行深度优先迭代,可以考虑如下逻辑:
def loop_through_elements(elements):
for element in elements:
if re.search("myRegExp", element):
child_elements = get_elements(element)
return loop_through_elements(child_elements)
else:
return element
以下三点与您的代码不同:
您要确保您不会覆盖“元素” 获得新元素时会发生变化。相反,我称这些 “ child_elements”。
我在loop_through_elements函数中添加了对loop_through_elements的调用。这称为recursion!如果您不熟悉此概念,建议您多读一些,因为此示例可能不是学习递归的绝佳场所。