Python基础(reduce,filter,map函数)
map函数:
map函数特点:对可迭代对象中的每个元素进行相同的操作(例如每个元素+1等等)
1 #————————————————map函数———————————————————— 2 #对列表的各个元素实现加一功能 3 li=[1,2,3] 4 #定义一个加一函数 5 def func1(x): 6 return x+1 7 8 #第一种map函数使用方式---lambda 9 res1=map(lambda x:x+1,li) 10 print(list(res1)) 11 12 #第二种map函数使用方式---普通函数 13 res2=map(func1,li) 14 print(list(res2))
map扩展(将列表中的数字全部变成字符串):
print(list(map(str,[1,2,3,4,5,6])))
reduce函数:
reduce函数特点:从左到右对一个序列的项累计地应用有两个参数的函数,以此合并序列到一个单一值。(例如累加或累乘列表元素等等)
1 #————————————————reduce函数———————————————————— 2 #python3在使用reduce函数时需要导入模块 3 from functools import reduce 4 nums=[1,2,3,4] 5 6 #实现乘法的普通函数 7 def func2(x,y): 8 return x*y 9 10 #第一种使用reduce函数的方式---lambda 11 res3=reduce(lambda x,y:x*y,nums) 12 print(res3) 13 14 #第二种使用reduce函数的方式---普通函数 15 res4=reduce(func2,nums) 16 print(res4)
filter函数:
filter函数特点:对可迭代对象中的元素按照特定的条件进行筛选。(例如筛选列表中所有的偶数等等)
1 #————————————————filter函数———————————————————— 2 lis=[0,1,2,3,4,5,6] 3 4 #定义筛选偶数的普通函数一 5 def func3(x): 6 if x%2==0: 7 return x 8 9 #定义筛选偶数的普通函数二 10 def func4(x): 11 return x%2==0 12 13 #第一种使用filter函数的方式---lambda 14 res5=filter(lambda x:x%2==0,lis) 15 print(list(res5)) 16 17 18 #在使用两个普通函数时使用时会有一些差异,第一种return 0被当做返回False,因此列表中没有获取到0这个元素,第二种则不会有这种情况。 19 20 #第二种使用filter函数的方式---普通函数一 21 res6=filter(func3,lis) 22 print(list(res6)) 23 24 #第二种使用filter函数的方式---普通函数二 25 res7=filter(func4,lis) 26 print(list(res7))
*filter的底层实现原理:
def foo(x): return x>5 def filter(func,iter): lst=[] for i in iter: if func(i): lst.append(i) return lst ret=filter(foo,[1,2,3,4,5,6,7,8,9]) print(ret)