目录
1 介绍
来看一下传说中的lambda表达式,这东西听起来高大上,其实就是个表达式,功能也很有限,优点就是实现简单函数时方便,还有装b。
式lambda 形式参数: 表达式
形式参数就是输入,返回表达式的值。
2 简单用例
本节简单介绍用法,实际应用按需求定。
话不多说,用代码说明是最直接的。
# lambda表达式可看做函数,直接赋给变量
f = lambda item: item + 10
print(f(10)) # 20
f = lambda x1, y1: x1 + y1
print(f(10, 20)) # 30
不过以上看看就算了,不多用,更多的还是结合其他函数使用。
- filter()函数
# filter函数有过滤功能
# 需要传入函数(return True or False)和迭代对象
x = [1, 2, 3, 4, 5, 6, 7, 8]
y = filter(lambda item: item % 2 == 0, x)
print(list(y))
- map()函数
# map函数有映射功能
# 需要传入函数(return 元素)和迭代对象
x = [1, 2, 3, 4, 5, 6, 7, 8]
y = map(lambda item: item + 10, x)
print(list(y))
更多的函数慢慢来,等用到再说。
3 实际案例
3.1 需求1
将目标列表中的值替换,大于3的为True, 否则为False
常用在数据集预处理中,字符串转float,True or False,1 or 0,
x = [1, 2, 3, 4, 5, 6, 7, 8]
y = []
# extend函数扩展y,传入迭代器
y.extend(map(lambda p: p > 3, x))
print(y) # [False, False, False, True, True, True, True, True]
3.2 需求2
给map函数需要传的函数传参,好像有点绕,看示例就明白了。
# map函数需要一个函数,但是无法给它传参,这时lambda可以
def fn(x, y):
return x+y
y1 = map(lambda item: fn(item, 10), x)
print(list(y))
这在数据集处理中非常常用,比如,需要按不同的编码方式处理标签值。
等再有需求就补上,欢迎广大码农提供需求!