十一、python沉淀之路--map函数、filter函数、reduce函数、匿名函数、内置函数

一、map函数

1、自定义函数,实现类似于map函数的功能

 1 num_l = [1,3,4,5,6,9]
 2 def power(n):
 3     return n ** 2
 4 def map_test(func,array):
 5     li0 = []
 6     for i in array:
 7         p = func(i)
 8         li0.append(p)
 9     return li0
10
11 f = map_test(power,num_l)  运用自己定义的函数来计算
12 print(f)
13 f = map_test(lambda x: x ** 2, num_l)   #调用匿名函数实现简单的功能,减少代码量,以下几种类似
14 print(f)
15
16
17 def add_one(n):
18     return n + 1
19
20 f1 = map_test(add_one,num_l)
21 print(f1)
22 f1 = map_test(lambda x: x+1, num_l)
23 print(f1)
24
25 def reduce_one(n):
26     return n - 1
27
28 f2 = map_test(reduce_one,num_l)
29 print(f2)
30 f2 = map_test(lambda x: x - 1, num_l)
31 print(f2)
1 [1, 9, 16, 25, 36, 81]
2 [1, 9, 16, 25, 36, 81]
3 [2, 4, 5, 6, 7, 10]
4 [2, 4, 5, 6, 7, 10]
5 [0, 2, 3, 4, 5, 8]
6 [0, 2, 3, 4, 5, 8]

2、map函数的运用:作用于成哥序列,让整个序列实现想要的转换

 1 ############n内置函数 map 的使用
 2 num_l = [1,3,4,5,6,9]
 3 f3 = map(lambda x:x + 3, num_l)  # map(func, *iterables) --> map object  这是map函数官方解释
 4 print(f3)
 5 print(list(f3))    #注意细节:map返回只是一个object,需要用list形式打印出来
 6
 7 s = ‘abcefg‘
 8 f4 = map(lambda st:st.upper(),s)
 9 print(f4)
10 print(list(f4))
1 <map object at 0x000001C6AC2B7860>
2 [4, 6, 7, 8, 9, 12]
3 <map object at 0x000001C6AC2B7898>
4 [‘A‘, ‘B‘, ‘C‘, ‘E‘, ‘F‘, ‘G‘]

二、filter函数

1、自定义函数,实现类似于filter的功能

例1:铺垫

 1 bjper = [‘bj_老王‘,‘bj_老赵‘,‘bj_老李‘,‘tian an men‘,‘gugong‘]
 2 def filter_test(array):
 3     li0 = []
 4     li1 = []
 5     for i in array:
 6         if i.startswith(‘bj‘):
 7             li0.append(i)
 8         if not i.startswith(‘bj‘):
 9             li1.append(i)
10     return li0,li1
11
12 f = filter_test(bjper)
13 print(f)
1 ([‘bj_老王‘, ‘bj_老赵‘, ‘bj_老李‘], [‘tian an men‘, ‘gugong‘])

例2

 1 def show_bj(s):
 2     return s.startswith(‘bj‘)
 3
 4 bjper = [‘bj_老王ha‘,‘bj_老赵‘,‘bj_老李‘,‘tian an menha‘,‘gugongha‘]
 5 def filter_test(func,array):
 6     li0 = []
 7     for i in array:
 8         if func(i):
 9             li0.append(i)
10     return li0
11
12 f = filter_test(show_bj,bjper)
13 print(f)
14 # lambad 运用
15 f = filter_test(lambda s:s.endswith(‘ha‘),bjper)
16 print(f)
1 [‘bj_老王ha‘, ‘bj_老赵‘, ‘bj_老李‘]
2 [‘bj_老王ha‘, ‘tian an menha‘, ‘gugongha‘]

2、filter函数运用:主要筛选出想要的元素

 1 ################ filter 应用:官方解释:filter(function or None, iterable) --> filter object
 2 bjper = [‘bj_老王ha‘,‘bj_老赵‘,‘bj_老李‘,‘tian an menha‘,‘gugongha‘]
 3 def show_bj(s):
 4     return s.startswith(‘bj‘)
 5 f1 = filter(show_bj,bjper)
 6 print(f1)
 7 print(list(f1))                  #注意细节:filter返回只是一个object,需要用list形式打印出来
 8
 9 f2 = filter(lambda st: not st.endswith(‘ha‘),bjper)
10 print(f2)
11 print(list(f2))
1 <filter object at 0x00000218E63A7898>
2 [‘bj_老王ha‘, ‘bj_老赵‘, ‘bj_老李‘]
3 <filter object at 0x00000218E63A78D0>
4 [‘bj_老赵‘, ‘bj_老李‘]

三、reduce函数:

1、

例1

1 num_l = [2,4,10,100]
2 init = 0
3 for i in num_l:
4     init += i
5 print(init)

结果:116

例2

1 num_l = [2,4,10,100]
2 def sum_test(array):
3     init = 0
4     for i in array:
5         init += i
6     return init
7 f = sum_test(num_l)
8 print(f)

结果:116

例3

1 num_l = [2,4,10,100]
2 init = 1
3 for i in num_l:
4     init *= i
5 print(init)

结果8000

例4

1 num_l = [2,4,10,100]
2 def mul(array):
3     init = 1
4     for i in array:
5         init *= i
6     return init
7
8 f = mul(num_l)
9 print(f)

结果:8000

例5

 1 num_l = [2,4,10,100]
 2 def reduce_test(func,array,init=None):
 3     init = array.pop(0)
 4     for i in array:
 5         init = func(init,i)
 6     return init
 7
 8 def product(x,y):
 9     return x * y
10
11 f = reduce_test(product,num_l,)
12 print(f)

结果:8000

例6

 1 num_l = [2,4,10,100]
 2 def reduce_test(func,array,init=None):
 3     if init == None:
 4         res = array.pop(0)
 5     else:
 6         res = init
 7     for i in array:
 8         res = func(res,i)
 9     return res
10
11 def product(x,y):
12     return x * y
13
14 f = reduce_test(product,num_l,4)
15 print(f)

结果:32000

例7

 1 ############# reduce 函数
 2 #使用前需要导入reduce函数包
 3 from functools import reduce
 4
 5 num_l = [2,4,10,100]
 6 def product(x,y):
 7     return x * y
 8
 9 f1 = reduce(product,num_l,5)
10 print(f1)
11
12 f1 = reduce(lambda x,y: x + y + 1,num_l,1000)
13 print(f1)
1 40000
2 1120

原文地址:https://www.cnblogs.com/jianguo221/p/8965645.html

时间: 2024-11-09 01:41:30

十一、python沉淀之路--map函数、filter函数、reduce函数、匿名函数、内置函数的相关文章

Python成长之路第二篇(2)_列表元组内置函数用法

列表元组内置函数用法list 元组的用法和列表相似就不一一介绍了 1)def append(self, p_object):将值添加到列表的最后 # real signature unknown; restored from __doc__ """ L.append(object) -- append object to end """ pass (2)def count(self, value): 值的出现次数 # real signature

python基础12_匿名_内置函数

一个二分查找的示例: # 二分查找 示例 data = [1, 3, 6, 7, 9, 12, 14, 16, 17, 18, 20, 21, 22, 23, 30, 32, 33, 35, 36, 66] def binary_search(dataset, find_num): print(dataset) if len(dataset) > 1: mid = int(len(dataset) / 2) if dataset[mid] == find_num: # find it print

Python函数的基本定义和调用以及内置函数

首先我们要了解Python函数的基本定义: 函数是什么? 函数是可以实现一些特定功能的小方法或是小程序.在Python中有很多内建函数,当然随着学习的深入,你也可以学会创建对自己有用的函数.简单的理解下函数的概念,就是你编写了一些语句,为了方便使用这些语句,把这些语句组合在一起,给它起一个名字.使用的时候只要调用这个名字,就可以实现语句组的功能了. 语法如下: # 定义方式 : def functionname([parameterlist]): functionname:函数名 paramet

python 培训第三章 ,函数,装饰器,模块,内置函数之一函数

目录: 函数示例装饰器模块内置函数一.函数示例: 1.定义函数: def fun(args): '描述信息' 函数体 return 返回值 定义函数的三种形式: 无参函数def foo():print('in the foo') foo() 有参函数: def bar(x,y): print('in the bar') bar(1,2) 空函数: def func(): pass 空函数的应用示例: def put():pass def get():pass def cd():pass def

Python中常用内置函数介绍(filter,map,reduce,apply,zip)

Python是一门很简洁,很优雅的语言,其很多内置函数结合起来使用,可以使用很少的代码来实现很多复杂的功能,如果同样的功能要让C/C++/Java来实现的话,可能会头大,其实Python是将复杂的数据结构隐藏在内置函数中,只要写出自己的业务逻辑Python会自动得出你想要的结果.这方面的内置函数主要有,filter,map,reduce,apply,结合匿名函数,列表解析一起使用,功能更加强大.使用内置函数最显而易见的好处是: 1. 速度快,使用内置函数,比普通的PYTHON实现,速度要快一倍左

python基础篇【第四篇】内置函数、装饰器:

一.内置函数: 对于一些python中常用的函数,python自身就已经定义了一些函数用于调用,我们就叫它内置函数!如以下都是python中内置的函数! 一些常用的内置函数具体用法: 一些常用的内置函数具体用法: 1.abs():取绝对值 1 n=abs(-2) 2 print(n) 3 4 结果: 5 2 2.all();传入可迭代的对象中,都为真才为真; Fasle: 0,None,"",[],{} ,()都为假True: 1,-1,True,有值返回真. n=all([1,2,3

Python基础(七)内置函数

今天来介绍一下Python解释器包含的一系列的内置函数,下面表格按字母顺序列出了内置函数: 下面就一一介绍一下内置函数的用法: 1.abs() 返回一个数值的绝对值,可以是整数或浮点数等. 1 2 3 4 5 6 print(abs(-18))          print(abs(0.15)) result: 18 0.15 2.all(iterable) 如果iterable的所有元素不为0.''.False或者iterable为空,all(iterable)返回True,否则返回False

Python基础【day04】:内置函数

一.内置函数表格 1.表格 二.内置函数详情 1.abs(x) 功能:取数的绝对值 1 2 >>> abs(-1)  #取-1的绝对值 1 2.all(iterable) 功能:如果这个可迭代的元素都为真,则返回真(非0的就为真,负数也是为真) 1 2 3 4 >>> all([0,1,3])   #有0,说明为假 False >>> all([1,-5,6])  #负数也是为真 True 3.any(iterable) 功能:可迭代的元素中,有一个为

Python入门-内置函数二

看到标题你也能猜到今天要说大概内容是什么了,没错,昨天没有说完的部分再给大家说说(有一些重合的部分),内置函数的内容比较多,并且工作中经常用到的却不太多,很多都是不太常用的,所以我就着重说一些比较常用的,今天再说两个函数:匿名函数和递归函数.还有就是二分法查找 首先来说一下匿名函数,因为几个比较重要的内置函数都要和匿名函数搭配来用 一.匿名函数 为了解决一些简单的需求而设计的一句话函数 # 计算n的n次方 def func(n): return n**n print(func(10)) f =