python学习-29 map函数-filter函数
movie_person = ['小红','小明','小王','富豪_sb','美女_sb'] def filter_test(array): ret = [] for i in array: if not i.startswith('小'): # 以‘小’开头的 ret.append(i) return ret print(filter_test(movie_person)) def filter_test(array): res = [] for i in array: if not i.endswith('sb'): # 以‘sb’结尾的 res.append(i) return res print(filter_test(movie_person))
运行结果:
['富豪_sb', '美女_sb'] ['小红', '小明', '小王'] Process finished with exit code 0
或另一种简单的方法:
movie_person = ['小红','小明','小王','富豪_sb','美女_sb'] def filter_test(func,array): ret = [] for i in array: if not func(i): ret.append(i) return ret res = filter_test(lambda x:x.endswith('sb'),movie_person) # 以‘sb’结尾的 print(res)
运行结果:
['小红', '小明', '小王'] Process finished with exit code 0
reduce函数
1.加法和乘法(两种方法)
from functools import reduce # 调用 reduce函数 num_1 = [1,2,3,4,5,6,7,8,9,100] def reduce_test(array): res = 0 for num in array: res += num return res print(reduce_test(num_1)) def reduce_test(func,array): res = array.pop(0) # 将列表的值一个一个传值 for num in array: res =func(res,num) return res print(reduce_test(lambda x,y:x*y,num_1)) # 用lambda 进行乘法运算
运行结果:
145
36288000
Process finished with exit code 0
2.传一个初始值
from functools import reduce # 调用 reduce函数 num_1 = [1,2,3,4,5,6,7,8,9,100] def reduce_test(func,array,init = None): if init is None: res = array.pop(0) else: res = init for num in array: res = func(res,num) return res print(reduce_test(lambda x,y:x*y,num_1,100)) # 传了一个初始值100,以100开始乘以列表里的每个数
运行结果:
3628800000
Process finished with exit code 0