我想在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。
您可以创建一个接收条件和输出数组的函数,然后使用它们来创建一个新函数,该函数执行您的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
您可以循环执行此操作,将条件和输出保留在两个列表中。
示例:
def dynamic_if(number, inputs, outputs):
for inp in range(len(inputs)):
if number < inputs[inp]:
return outputs[inp]
return -1
inputs = [5,10,20]
outputs =[10,20,18,-1]
print(dynamic_if(8,inputs,outputs))
print(dynamic_if(12,inputs,outputs))
输出:
20
18