三周四次课(11月2日)


1.高阶函数

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

defadd(x,y,f):returnf(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元素的列表

例子:


deff2(x):returnx*xl=[1,2,3,4,5,6]print(map(f2,l))

结果:


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

解释:

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

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


reduce()函数

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

例子:


deff(x,y):returnx+yprint(reduce(f,[1,2,3,4,5],10))

结果:

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,10)的值为25

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


filter()函数

filter()函数是python内置的另一个有用的高阶函数,filter()函数接收一个函数f和一个list,这个函数的作用是对每个元素进行判断,返回True或者False,filter()根据判断结果自动过滤掉不符合条件的元素,返回由符合条件元素组成的新list。

例子:


defis_odd(x):returnx%2==1print(filter(is_odd,[1,2,3,4,5,6,7]))

结果:

[1,3,5,7]



解释:

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

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

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


sorted()函数

sorted(...)

sorted(iterable,cmp=None,key=None,reverse=True)

对字典进行排序:

按照value进行排序

mm=dict(a=1,b=10,c=3,d=9)printsorted(mm,iteritems(),key=lambdad:d[1],reverse=True)

作用:返回一个经过排序的列表。

第一个参数是一个iterable,返回值是一个对iterable中元素进行排序后的列表(list)。


可选的参数有三个,cmp、key和reverse:

1)cmp指定一个定制的比较函数,这个函数接收两个参数(iterable的元素),如果第一个参数小于第二个参数,返回一个负数;如果第一个参数等于第二个参数,返回零;如果第一个参数大于第二个参数,返回一个正数。默认值为None。


2)key指定一个接收一个参数的函数,这个函数用于从每个元素中提取一个用于比较的关键字。默认值为None。


3)reverse是一个布尔值。如果设置为True,列表元素将被倒序排列。

key参数的值应该是一个函数,这个函数接收一个参数并且返回一个用于比较的关键字。对复杂对象的比较通常是使用对象的切片作为关键字。

例如:

students=[('john','A','15'),('jane','B','12'),('dave','B','10')]print(sorted(students,key=lambdas:s[2]))#按年龄排序

结果:

[('dave','B','10'),('jane','B','12'),('john','A','15')]


2.匿名函数

匿名函数就是没有名字的函数。lambda函数是一个快速定义单行的最小函数,可以用在任何需要函数的地方

常规版本:

deffun(x,y):returnx*y

lambda版本:

r=lambdax,y:x*yprint(r(2,3))print(type(r))

结果:

6<type'function'>

解释:

我们可以看到,r其实是一个函数模型,当我们使用r函数的时候,直接传入参数就可以了。

更多相关文章

  1. python:inspect函数自动生成函数名
  2. python3 自定义比较函数
  3. 是否有一个类似于Python的“枚举”函数的Java ?
  4. 在python中创建指数函数。
  5. 从bash脚本传递参数到python解释器
  6. 是否可以使用argparse来捕获任意一组可选参数?
  7. Python定义函数时,不同参数类型的传递
  8. Python语言特性之1:函数参数传递
  9. python题目——认识*与**,判断函数输出

随机推荐

  1. 干货丨时序数据库DolphinDB异常检测引擎
  2. Android百度地图的简单实现
  3. 聊一聊开发常用小工具
  4. 聊聊Zookeeper中的ZAB协议,保证你能看懂
  5. 带有过期时间的LRU实现(java版)
  6. Android中获取网络图片的三种方法
  7. java关键字系列(4)this
  8. android 4.0 StatusBar 架构
  9. 设计模式之代理模式(包含静态代理和动态代
  10. LockSupport:一个很灵活的线程工具类