相关疑难解决方法(0)

在Python中使用lambda表达式进行赋值

我有一个对象列表,我想删除所有空的对象,除了一个,使用filterlambda表达式.

例如,如果输入是:

[Object(name=""), Object(name="fake_name"), Object(name="")]
Run Code Online (Sandbox Code Playgroud)

...那么输出应该是:

[Object(name=""), Object(name="fake_name")]
Run Code Online (Sandbox Code Playgroud)

有没有办法为lambda表达式添加赋值?例如:

flag = True 
input = [Object(name=""), Object(name="fake_name"), Object(name="")] 
output = filter(
    (lambda o: [flag or bool(o.name), flag = flag and bool(o.name)][0]),
    input
)
Run Code Online (Sandbox Code Playgroud)

python lambda expression variable-assignment

94
推荐指数
11
解决办法
9万
查看次数

def内部if/else三元表达式

有没有办法转换这个:

if counts:
    def a(l):
        return a_with_counts(l)
else:
    def a(l):
        return a_without_counts(l)
Run Code Online (Sandbox Code Playgroud)

变成三元表达?

我试过这样的事

def a(l):
    return a_with_counts(l) if counts else a_without_counts(l)
Run Code Online (Sandbox Code Playgroud)

但我不希望if counts每次打电话都要评估a(l),我想在我的方法开始时做一次,然后每次打电话时直接评估指定的功能a(l).这可能吗?

谢谢!

python conditional-operator

0
推荐指数
1
解决办法
72
查看次数