day12——Python高阶函数及匿名函数

高阶函数:就是把函数当成参数传递的一种函数,例如:

def add(x,y,f):

return f(x) + f(y)

print(add(-8,11,abs))

结果:19

解释:

1.调用add函数,分别执行abs(-8)和abs(11),分别计算出他们的值

2.最后再做和运算

map()函数

map函数时Python内置的一个高阶函数,它接受一个函数f和一个list,并把list的元素以此传递给函数f,然后返回一个函数f处理完所有list元素的列表,如下所示:

def f2(x):

return x*y

l = [1,2,3,4,5,6]

print(map(f2,l))

结果:

[1,4,9,26,25,36]

解释:

1.l是一个list,把此list的元素传入函数f2,求每个元素的平方

2.把最终所有的计算结果合并成一个新的list,就如新的结果所示:

reduce()函数

reduce()函数也是Python内置的一个高阶函数,reduce()函数接收的参数和map()类似,一个函数f,一个list,但行为和map()不同,reduce()传入的函数f必须接收两个参数,第一次调用是把list的前两个元素传递给f,第二次调用时,就是把前两个list元素的计算结果当成第一个参数,list的第三个元素当成第二个参数,传入f进行操作,以后以 以此类推,并返回最终结果值。

例子如下所示:

def f(a,b)

return a + b

print(reduce(f,[1,2,3,4,5],10) #f后面是列表

结果:25

解释:

1.计算a = f(1,2)的值为3

2.计算b = f(a,3)的值为6

3.计算c = f(b,4)的值为10

4.计算d = f(c,5)的值为15

5.计算f = d(d,10)的值为25

其实就是相当于1+2+3+4+5+10,最后的10是一个默认值,及最终再执行一次。

filter()函数

filter英文单词就是过滤的意思,filter()函数就是Python内置的另一个有用的高阶函数,filter()函数接收一个函数f和一个list,这个函数f的作用是对每个元素进行判断,返回True或False,filter()根据判断结果自动过滤掉不符合条件的元素,返回由符合条件元素组成的新list。例子如下:

def is_odd(x):

return x % 2 == 1

print(filter(is_odd,[1, 2, 3, 4, 5, 6, 7]))

结果:[1,3,5,7]

解释:

1.list的元素以此传入到函数is_odd

2.is_odd判断每个元素是否符合条件,把符合条件的留下,不符合条件的舍弃

3.把最终所有符合条件的元素组成一个新的列表

#高阶函数map()函数,第一个函数为自定义函数,第二个参数为一个迭代对象

l = [1, 2, 3, 4, 5] #把此处[]改为()最终结果还是一个列表,map的返回值还是一个列表

def f2(x):

return x*x

m = map(f2,l)

print(type(m))

print(‘#‘*50)

print(m)

#reduce()函数

# 传入的函数必须接收两个参数,把可迭代对象的两个参数作为函数的实参,传入到f函数中

# 把每次f运算的结果作为第一个实参,可迭代对象的下一个元素作为另一个实参,传入函数f中

# 以些类推,最后得到结果

print(‘#‘*50)

def f(a,b):

return a + b

print(reduce(f,[1, 2, 3, 4, 5], 10)) #f后面是列表,

print(‘#‘*50)

#filter()函数

#每次把可迭代对象的元素传入进去,如果返回为True,则保留该元素,如果返回为False,则不保留该元素

c = [1, 2, 3, 4, 5, 6, 7, 8]

def is_odd(x):

return x % 2 == 1

print(filter(is_odd,c))

打印结果为:

匿名函数:没有名字的函数,那为什么要设立匿名函数,它有什么作用呢?lambda函数是一种快速定义单行的最小函数,可以用在任何需要函数的地方

常规版本:

def fun(x,y)

retrun x*y

lambda版本:

r = lambda x,y:x*y

print(r(2,3))

print(type(r))

结果:6

#匿名函数,用的不是太多,

def sum(x,y):

return x+y

m = lambda x,y:x+y

print(m)

print(‘#‘*20)

print(m(4,5))

#sorted()是高阶涵数

#对字典进行排序

mm = dict(a=1, c=3, b=10, d=9)

print(‘#‘*20)

print(mm)

for i in mm:

print i

print(‘#‘ * 20)

for j in mm.iteritems():

print(j)

print(‘#‘*20)

test = sorted(mm.iteritems(),key=lambda d: d[1])

print(test)

打印结果为:

时间: 2024-10-09 20:37:24

day12——Python高阶函数及匿名函数的相关文章

python 高阶函数详解。

1,概念: Iterable 和 IteratorIterable 表示该变量可以被 for in 进行迭代.Iterator 表示该变量可以被 next(o)进行迭代(上一个表示有限迭代,下一个表示一个惰性的迭代概念,可以无限迭代.)一般的Iterable 的变量有:L=[{},[],(1,),{3:4},{3,4}]for x in L:print(isinstance(x,Iterable))print(isinstance(x,Iterator)) truefalse 可见,基础变量Li

高阶函数和匿名函数

1.高阶函数 把函数当成一个参数的函数 例子: abs函数作为一个参数 def add(a,b,f): return f(a) + f(b) print (add(10,-10,abs)) 结果: 20 常用内置高阶函数 1)map()函数:接收一个函数和列表,并将列表的值传给函数,最后将结果以列表形式输出 例子: def power(x): return x*x list1=[1,2,3,4,5,6,7,8,9,10] print map(power,list1) 结果: [1, 4, 9,

Python高阶函数_map/reduce/filter函数

本篇将开始介绍python高阶函数map/reduce/filter的用法,更多内容请参考:Python学习指南 map/reduce Python内建了map()和reduce()函数. 如果你读过Google的那篇大名鼎鼎的论文"MapReduce: Simplified Data Processing on Large Clusters",你就能大概明白map/reduce的概念. 我们先看map.map()函数接收两个参数,一个是函数,一个是序列,map将传入的函数依次作用到序

python高阶函数的使用

目录 python高阶函数的使用 1.map 2.reduce 3.filter 4.sorted 5.小结 python高阶函数的使用 1.map Python内建了map()函数,map()函数接受两个参数,一个是函数,一个是Iterable,map将传入的函数依次作用到序列的每一个元素上,并把结果作为新的Iterator返回. 举例说明,比如我们有一个函数f(x)=x*2,要把这个函数作用在一个list[1, 2, 3, 4, 5, 6, 7, 8, 9]上,就可以用map()实现. >>

python之内置函数、匿名函数、递归

一.内置函数 内置函数详解:http://www.runoob.com/python/python-built-in-functions.html 二.匿名函数 匿名函数就是不需要显式的指定函数 1 #这段代码 2 def calc(n): 3 return n**n 4 print(calc(10)) 5 6 #换成匿名函数 7 calc = lambda n:n**n 8 print(calc(10)) 特点: 1.lambda只是一个表达式,函数体比def简单很多 2.lambda的主体是

python内置函数、匿名函数、递归

一.内置函数 内置函数详解:http://www.runoob.com/python/python-built-in-functions.html 二.匿名函数 匿名函数就是不需要显示的指定函数 #这段代码 def calc(n): return n**n print(calc(10)) #换成匿名函数 calc = lambda n:n**n print(calc(10)) l=[3,2,100,999,213,1111,31121,333] print(max(l)) dic={'k1':1

Python 基础第十四天(内置函数和匿名函数)

今天主要内容 1.生成器补充--生成器推导式 2.内置函数 3.匿名函数 1.生成器推导式 (1)列表推导式:一行搞定 ,简单,感觉高端.但是,不易排错. 例: l1 = [] for i in range(1,12):  l1.append('python%s期' % i) print(l1) 生成式: l2 = ['python%s期' %i  i  for i in range(1,12)] print(l2) 结构: 循环模式[经过加工的i for i in 可迭代对象] 筛选模式 [经

python之迭代器生成器和内置函数,匿名函数

今天学习了迭代器生成器以及内置函数和匿名函数,说实话有些懵圈,有些难度了. 一.迭代器和生成器 1.如何从列表.字典中取值的: index索引 for循环 凡是可以使用for循环取值的都是可迭代的 (1)可迭代协议:内部含有__iter__方法的都是可迭代的 (2)迭代器协议:内部含有__iter__方法和__next__方法的都是迭代器 什么是可迭代的:内部含有__iter__方法的都是可迭代的 什么是迭代器:迭代器=iter(可迭代的),自带一个__next__方法 可迭代最大的优势:节省内

python内置函数及匿名函数

locals  本地作用域/局部作用域 会随着位置的改变而改变globals 全局作用域           永远不变 永远是全局 a = 1 b = 2 print(locals()) print(globals()) def func(): c = 3 d = 4 print(locals()) def func2(): l1 = [] d1 = {} print(locals()) #无论在哪里打印 得到的都是全局作用域中的名字 func() func2() # 结果 # {'__name