我有一个对象列表,我想删除所有空的对象,除了一个,使用filter和lambda表达式.
例如,如果输入是:
[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) 我遇到的部分代码如下,其中workers是类对象的列表:
worker_threads = []
for worker in workers:
worker_fn = lambda worker=worker: worker.run(sess, coord, FLAGS.t_max)
t = threading.Thread(target=worker_fn)
t.start()
worker_threads.append(t)
Run Code Online (Sandbox Code Playgroud)
通常我期望lambdais的语法lambda x : func(x),但在这里worker=worker用于什么?