Python 匿名函数管理函数';s输出,不带lambda
假设我有一个返回输出元组的函数:Python 匿名函数管理函数';s输出,不带lambda,python,python-3.x,lambda,functools,Python,Python 3.x,Lambda,Functools,假设我有一个返回输出元组的函数: def f(): return 'zero', 1 但是我必须提供一个新的匿名函数,它只返回返回元组的第0个元素。这是一个带有lambda的简单单行程序: lambda : f()[0] # returns 'zero' 有没有办法使用functools或类似工具来做同样的事情 鉴于lambda据称是,我假设有一种方法可以在没有lambda的情况下实现这一点,但我还没有弄清楚 我知道在管理函数的输入参数时,functools.partial几乎可以
def f():
return 'zero', 1
但是我必须提供一个新的匿名函数,它只返回返回元组的第0个元素。这是一个带有lambda
的简单单行程序:
lambda : f()[0] # returns 'zero'
有没有办法使用functools
或类似工具来做同样的事情
鉴于lambda
据称是,我假设有一种方法可以在没有lambda
的情况下实现这一点,但我还没有弄清楚
我知道在管理函数的输入参数时,
functools.partial
几乎可以替代lambda
。但是管理函数的输出呢?我还没弄明白 您可能正在寻找操作员。itemgetter
:
from operator import itemgetter
get_zeroth = itemgetter(0)
assert get_zeroth(f()) == 'zero'
您可能正在寻找
运算符。itemgetter
:
from operator import itemgetter
get_zeroth = itemgetter(0)
assert get_zeroth(f()) == 'zero'
你可以试着用行为来产生
由于
[f()[0]!=''''>
生成一个布尔值,正如您所说,它会生成一个元组,因此[f()[0]=''>
将始终是错误的,因此它将给出0,这是您想要的索引号。您可以尝试生成一个元组的行为
由于
[f()[0]!=''''>
产生一个布尔值,正如您所说,它会产生一个元组,因此[f()[0]=''>
总是错误的,所以它会给出0,这是您想要的索引号。当前的答案似乎是在产生值本身——您似乎满足于通过f()[0]实现这个值
——与生成值的可调用函数相反。惰性评估(正如您在lambda
示例中所做的那样)是一项要求吗?如果不是的话,问题不再是用投影后合成f
,而是定义一个常量函数,我将指定
itertools.repeat(f()[0]).__next__
当前的答案似乎是生成值本身——您似乎满足于通过
f()[0]
——而不是可调用的生成值。惰性评估(正如您在lambda
示例中所做的那样)是一项要求吗?如果不是的话,问题不再是用投影后合成f
,而是定义一个常量函数,我将指定
itertools.repeat(f()[0]).__next__