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__