如何使用Lambda函数重写基于输入变量过滤列表元素的代码?
使用Lambda函数重写你的列表过滤逻辑
很简单,我们可以把原函数里的列表推导式直接放进lambda表达式中,结合外部定义的s_list就能实现完全等价的功能。
重写后的完整代码如下:
s_list = [1,2,3,4,5,6] f = lambda x: [a for a in s_list if a not in x] print(f([1,2])) # 输出: [3,4,5,6] print(f([4,6])) # 输出: [1,2,3,5]
简单说明:
- Lambda的语法是
lambda 参数: 返回值,这里我们把x作为输入参数,后面紧跟原函数里的列表推导式作为返回结果,和你原来定义的f(x)函数行为完全一致。 - 因为
s_list是在lambda外部定义的外层作用域变量,lambda可以直接访问它,所以不需要额外传递这个列表参数。如果想要让lambda更独立、不依赖外部变量,也可以改成带两个参数的形式:f = lambda s_list, x: [a for a in s_list if a not in x] print(f([1,2,3,4,5,6], [1,2])) # 输出同样是 [3,4,5,6]
不过按照你原代码的逻辑,第一种写法就完全满足需求啦。
内容的提问来源于stack exchange,提问作者jacobcan118
相关产品推荐
相关产品推荐

