首页 > 解决方案 > 给定条件和值范围的动态 if 语句

问题描述

我想在 python 中有一个动态的 if-else。这是一个简单的例子:

def static_if(x):
   if x < 5:
      return 10
   elif x< 10:
      return 20
   elif x<20:
       return 18
   else:
       return -1

返回值和范围是不断变化的。甚至我使用的 if-else 的数量也可能会改变。我想要一个动态捕获这个输出的函数。例如,给定的输出数组[10,20,18,-1][5,10,20]上述函数的条件被创建。输出的长度和条件可能会改变,但输出的长度总是比条件少 1。

标签: pythonif-statement

解决方案


您可以创建一个接收条件和输出数组的函数,然后使用它们创建一个新函数来执行您的static_if操作:

def dynamic_if(output, cond):
    def func(x):
        for i, val in enumerate(cond):
            if x < val:
                return output[i]
        return output[-1]

    return func
static_if = dynamic_if([10,20,18,-1], [5,10,20])

static_if(4) # will output 10
static_if(21) # will output -1

推荐阅读