Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在python的递归中应用各种规则_Python_Recursion - Fatal编程技术网

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

如何在python的递归中应用各种规则,python,recursion,Python,Recursion,我有一个规则的列表,每个规则都在不同的班级里 rules = ['RuleA', 'RuleB', 'RuleC'] 规则A。。这些是等级 每一条规则都像 class RuleA(object): def __init__(self, entry): self.entry = entry def apply(): return {data:[l1,l2], final: true} 我想像你一样申请 ces = []

我有一个
规则的列表
,每个规则都在不同的班级里

rules = ['RuleA', 'RuleB', 'RuleC']
规则A。。这些是等级

每一条规则都像

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
基本上
如果res['final']为真
则表示不需要进一步处理,然后将列表项附加到
ces

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

res['final'] is True

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

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

没有必要使用
else
语句,因为如果没有停止循环,默认情况下循环将继续循环。

实际上,我还希望如果final为false,那么
ces
还应该检查进一步的规则和条目