如何在python中的递归中应用各种规则

时间:2015-05-30 06:05:03

标签: python recursion

我有Rules的列表,每个规则都在不同的类

rules = ['RuleA', 'RuleB', 'RuleC']

其中RuleA ..是clasess

每个RuleA都像

class RuleA(object):
       def __init__(self, entry):
           self.entry = entry

       def apply():
          return {data:[l1,l2], final: true}

我想申请

  ces = []
  for entry in entries:    
    for rule in rules:
        r= rule(entry)
        res = r.apply()

        if res['final']:
           for e in res['data']:
               ces.append(e)
               # stop processing this entry
        else: 
           go further

基本上if res['final'] is True则表示不需要进一步处理,然后将列表项追加到ces

但是如果res['final'] is flase,那么我希望entry进一步遵守规则,除非

res['final'] is True

1 个答案:

答案 0 :(得分:0)

如果我理解正确,您可以使用break语句实现所需(break只是终止for循环并在循环后继续执行)。您的代码可能如下所示:

if res['final']:
   for e in res['data']:
       ces.append(e)
       break

不需要else语句,因为如果循环没有停止,循环将默认继续循环。