lambda()函数
lambda是创建匿名函数
<1> 例子:
def square_func(x):
return x * x
square_lambda_func = lambda x: x * x
for i in range(10):
assert square_func(i) == square_lambda_func(i)
<2> 因为lambda具有快速声明的特点,所以lambda非常适合用于回调函数以及作为一个参数传入其他函数中。此外,它还可以很好的和map, filter, reduce这几个函数一起使用。
<3> lambda函数的运算时间并不是很好,和用def定义的有名字函数相比,会稍微慢一些,因此更建议使用带名字的函数。
map()函数
map(func, iterable)是将iterable可迭代序列中的所有元素依次传给函数func。
这里可以作为iterable参数的有列表,集合,字典,元祖和字符串,返回的是一个map对象,例子如下所示:
nums = [1/3, 333/7, 2323/2230, 40/34, 2/3]
nums_squared = [num * num for num in nums]
print(nums_squared)
nums_squared_1 = map(square_fn, nums)
nums_squared_2 = map(lambda x: x * x, nums)
print( list(nums_squared_1 ))
filter()函数
主要用来筛选数据,一夫当关,万夫莫开
filter(func, iterable)
func返回的是布尔类型的数值,然后filter(func,iterable)函数返回的就是 func会返回True的元素,一个例子如下所示:
bad_preds = filter(lambda x: x > 0.5, [0.6,0.9,1.5,0.3])
print(list(bad_preds) )
# [0.6,0.9,1.5]
4/reduce()
reduce(func, iterable, initializer) 是在我们想对一个列表的元素都迭代地采用一个操作器的使用。比如,我们想计算一个列表的所有元素的乘积:
from functools import reduce
product = reduce(lambda x, y: x + y, nums)
# 如果nuns=[11,22,33],则就是11和22相加,然后得到的结果再和33相加
print(product)
==> 66