1.lambda 函数
Lambda函数,是一个匿名函数,创建语法:
lambda parameters:express
parameters:可选,如果提供,通常是逗号分隔的变量表达式形式,即位置参数。
expression:不能包含分支或循环(但允许条件表达式),也不能包含return(或yield)函数。如果为元组,则应用圆括号将其包含起来。
调用lambda函数,返回的结果是对表达式计算产生的结果。
2.filter 函数 :
(1) filter( func, seq ) :
接受两个参数, 第一个参数为过滤条件, 可以是匿名函数或是自定义函数, 第二个参数为
数据容器(可迭代对象), 用来装载要进行过滤的所有数据。
(2) 返回一个列表, 其中包含对其执行函数时结果为真的所有元素
例:
def use_filter(l):
"""
获取制定 列表/元组 中的奇数
:param l: list/tuple 要过滤的数据
:return: 过滤好的奇数列表
"""
rest = filter(lambda n: n % 2 != 0, l)
return rest
if __name__ == '__main__':
l = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
rest = use_filter(l)
print(list(rest))
输出:[1, 3, 5, 7, 9, 11]
3.map 函数
(1) map(function, sequence,…)
map()函数接收两个参数,一个是函数,一个是序列;
map()的功能是将传入的函数依次作用到序列的每个元素,并把结果返回。
(2) 返回一个列表, 其中包含对指定序列包含的项执行指定函数返回的值
例:
def f(n):
return n * n * n
def pow_num_use_map(l):
"""
根据 map函数计算给定列表的每一项的立方
:param l: list/tuple int类型的列表或是元组
:return: 原来列表中每一项的立方
"""
return map(f, l)
if __name__ == '__main__':
l = [1, 2, 3, 4, 5, 6, 7, 9]
rest = pow_num_use_map(l)
print(list(rest))
输出:
[1, 8, 27, 64, 125, 216, 343, 729]
PS: 当map()函数中传入的列表多于一个时,map()函数可以并行执行。
例: map( lambda x,y : xy, [3,5], [3,5] --> 即是[33,5*5] ---->[9, 25]
4.reduce 函数
(1) reduce(func, seq[, initial]) --> 等价于 func(func(func(seq[0],seq[1]),seq[2]),…)
reduce()函数接收两个参数,一个是函数名称,一个是序列;
功能是按照给定的方法把参数中的序列缩减为单个的值,并把结果返回。
(2) 使用指定的函数将序列的前两个函数合二为一, 再将结果与第三个函数合二为一, 依次类推。
直到处理完整个序列并得到一个结果。
例:
from functools import reduce
def f(m, n):
"""求两个数的和"""
return m + n
def get_sum_use_reduce(l):
"""
使用 reduce函数进行求和
:param l: list/type 里面是整数
:return: 列表所有项的和
"""
return reduce(f, l)
if __name__ == '__main__':
l = [1, 2, 4, 6, 7, 8, 9]
rest_reduce = get_sum_use_reduce(l)
print(rest_reduce)
输出: 37