map函数
我们首先使用原始的方法定义几个功能函数来实现数字的加,减,平方运算。代码如下所示:
def add(x):
return x+1
def reduce(x):
return x-1
def pf(x):
return x**2
num_1=[1,2,5,9]
def map_test(func,array):
ret=[]
for i in array:
res=func(i)
ret.append(res)
return ret
原始的方法比较麻烦。下面来看使用map函数方法(使用了lambda表达式比较方便简单):
num_1=[1,2,5,9]
res=map(lambda x:x+1,num_1)
print('内置函数处理结果:')
print(list(res))
输出结果:
再来看一个小写转大写的map方法:
msg='qwerqwer' print(list(map(lambda x:x.upper(),msg)))
filter函数
#按照以前的思维用循环来写一个过滤器,有局限性 # animial=['ab_cat','ab_tager','dog_ab','cow_ab'] # # def ab(n): # return n.endswith('ab') # # # def filter_test(func,array): # ret=[] # for i in array: # if not func(i): # ret.append(i) # return ret # print(filter_test(ab,animial)) # # #filter函数 # animial=['ab_cat','ab_tager','dog_ab','cow_ab','fly'] # #保留filter中含有的元素 # print(list(filter(lambda n:n.endswith('ab'),animial))) # #保留filter中不含有的元素 # print(list(filter(lambda n:not n.endswith('ab'),animial)))
reduce函数
# num_1=[9,2,4,5,6,7,3] # #第一种形式 # sum=0 # for num in num_1: # sum+=num # print(sum) #第二中形式 # def multi(x,y): # return x*y # def reduce_test(func1,array): # sum=array.pop(0) # for i in array: # sum=func1(sum,i) # return sum # print(reduce_test(lambda x,y:x*y,num_1)) # #reduce函数的功能 # from functools import reduce # #最后的2是给功能指定初始的值,也可以不指定初始的值 # print(reduce(lambda x,y:x+y,num_1,2))