python基础之函数
一、匿名函数
形如lambda x:x+1的即为匿名函数,使用方法如:function=lambda x:x+1,print(function(10)),可以输出11
二、map函数
内置的map函数实现函数自编程功能,即可将函数作为参数并调用,可快速实现对一组数据(如列表)的处理(处理方式为调用的函数)
#lambda x:x+1 def add_one(i):#不同的列表元素处理需求可定义为函数 return i+1 #lambda x:x-1 def mius(i): return i-1 # def map_test(num_1):#也可以将函数名作为参数传递进来,从而调用 # ls = [] # for i in num_1: # res=add_one(i) # ls.append(res**2) # return ls # def map_test(func,num_1): # ls = [] # for i in num_1: # res=func(i) # ls.append(res**2) # return ls num_1=[1,2,5,7,10] # print(map_test(lambda x:x+1,num_1)) #内置的map函数即实现上述功能 print(map(lambda x:x+1,num_1))#返回对象地址 print(list(map(lambda x:x+1,num_1)))#list转换成列表 #不一定非得列表,只要是可迭代对象就行 ls='linhaixueyuan' print(list(map(lambda x:x.upper(),ls)))
三、filter函数
filter函数与map函数使用形式是一样的,参数是函数名和可迭代对象,顾名思义过滤出(或者过滤掉有某些特征的元素)
#filter函数与map函数使用形式是一样的,参数是函数名和可迭代对象,顾名思义过滤出有某些特征的元素
#以下为filter具体实现
movie_people=['sb_alex','sb_wupeiqi','sb_yuanhao','linhaifeng']
# def filter_test(array):
# ret=[]
# for p in array:
# if not p.startswith('sb'):#可以将此行编辑成函数,从而调用
# ret.append(p)
# return ret
# def starts_test(n):
# return n.startswith('sb')#也可以使用匿名函数
#
# def filter_test(func,array):
# ret = []
# for p in array:
# if not func(p): # 将此行弄成通用的函数
# ret.append(p)
# return ret
#
# print(filter_test(starts_test,movie_people))
#filter函数
print(list(filter(lambda n:not n.startswith('sb'),movie_people)))#not更改布尔值 ,逻辑变成否,不加Not则输出以sb开头的元素
四、reduce函数
将序列中的元素处理后得到一个结果输出
#reduce函数实现 # num_l=[1,2,3,1000] # # def reduce_test(func,array,init=None):#init为初始赋值,默认没有 # if init is None: # res = array.pop(0) # 取第一个元素值 # else: # res=init # for i in array: # res=func(res,i) # return res # # print(reduce_test(lambda x,y:x*y,num_l)) #reduce函数:将序列处理后得到一个结果 from functools import reduce num_l=[1,2,3,1000] print(reduce(lambda x,y:x+y,num_l))#这里不设置初始值