Python lambda调用函数,无输出

nat*_*apo 3 python lambda

我想实现类似用于lambda调用输出为None或list的函数,如果它是列表,则获取第一个值.

lambda x: func(x,args)[0] if func(x,args) is not None else None
Run Code Online (Sandbox Code Playgroud)

但是,在这个函数中,似乎需要调用该函数两次以确定它是否为None.当然我可以使用try或条件语句编写代码:

def function(x):
    try: 
        return func(x,args)[0]
    except (IndexError,TypeError):
        return None
Run Code Online (Sandbox Code Playgroud)

或者只是改变输出func.但我仍然很好奇是否有一些方法只能调用该函数一次lambda.

dec*_*eze 14

这样做:

lambda x: (func(x, args) or [None])[0]
Run Code Online (Sandbox Code Playgroud)