我需要一个将规则/条件作为输入的函数。例如,给定一个整数数组,检测所有大于2的数字,以及所有大于4的数字。我知道这可以很容易地实现没有一个函数,但我需要这是一个函数内部。我想要的函数是
def _select(x,rule):
outp = rule(x)
return outp
L = np.round(np.random.normal(2,4,50),decimals=2)
y = _select(x=L,rule=(>2))
y1 = _select(x=L,rule=(>4))
我应该如何编写这样的函数?
函数是第一类对象,这意味着您可以将它们视为任何其他变量。
import numpy as np
def _select(x,rule):
outp = rule(x)
return outp
def rule_2(val):
return val > 2
def rule_4(val):
return val > 4
L = np.round(np.random.normal(2,4,50),decimals=2)
y = _select(x=L,rule=rule_2)
print(y)
y1 = _select(x=L,rule=rule_4)
print(y1)
在您的示例中,您想要使用的条件可以表示为一个简单表达式。pythonlambda
关键字允许您将表达式定义为其他语句和表达式中的匿名函数。因此,你可以替换函数
def
import numpy as np
def _select(x,rule):
outp = rule(x)
return outp
L = np.round(np.random.normal(2,4,50),decimals=2)
y = _select(x=L,rule=lambda val: val > 2)
print(y)
y1 = _select(x=L,rule=lambda val: val > 4)
print(y1)