filter、lambda、map、reduce、zip 在不同版本下使用方式有所不同,本文介绍在python3的用法
若想将上述函数得到的object对象转换成列表,可以采用 list() 函数
1.filter函数
过滤器函数,用以过滤列表中不符合条件的元素;
filter函数包含两个参数,第一个是过滤函数,第二个是待过滤列表对象;
eg.过滤掉列表中的空字符 ''
eg_list = [1,2,3,4,'','']
res = filter(None,eg_list)
res_list = list(res)
print(res_list)
#过滤后输出的结果为
res_list = [1,2,3,4]
eg.过滤掉列表中的非0元素
eg_list = [1,2,3,4,0,0]
res = filter(lambda i : i != 0,eg_list)
res_list = list(res)
print(res_list)
#过滤后输出的结果为
res_list = [0,0]
2.lambda函数
定义匿名函数,一些简单函数无需def,采用lambda可以更为减少代码冗余
格式为——lambda 参数:表达式
参数可以为多个
eg.定义函数f求解参数和
sum = lambda x,y,z : x +y +z
print(sum(1,2,3))
#计算输出结果为
6
3.map函数
参数为一个函数与一个列表
将函数作用于列表的每个元素,再返回一个新列表
eg.求解列表的平方
eg_list = [1,2,3]
f = lambda x : x * x
res = map(f,eg_list)
res_list = list(map)
print(res_list)
#计算输出结果为
res_list = [1,4,9]
4.reduce函数
python 3使用该函数前需要导入
from functools import reduce
reduce函数用以解决列表累加、累乘问题
参数有函数,列表(,初始参数)
若有初始参数,则从初始参数和列表第一个元素起始
若无初始参数,则从列表前两个元素起始
eg.计算列表的累和
f = lambda x,y : x + y
eg_list = [1,2,3]
res = reduce(f,eg_list)
print(res)
#输出计算结果为
res = 6
若上述例子中加入一个初始参数3
f = lambda x,y : x + y
eg_list = [1,2,3]
res = reduce(f,eg_list,3)
print(res)
#输出计算结果为
res = 9
5.zip函数
zip函数可以将多个对象打包,可以循环读取其中元素