(三)3-4 Python的高阶函数和匿名函数

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

def add(x,y,f):
    return f(x) + f(y)
print(add(-8,11,abs))

运行结果:

19

注:
1、 调用add函数,分别执行abs(-8)和abc(11),并分别计算他们的值
2、最后做运算

map()函数
map()函数是python内置的一个高级函数,它接受一个函数f和一个list,并把list的元素以此传递给函数f,然后返回一个函数f处理完所有list元素的列表。例如

def f2(x):
    return x*x
l = [1,2,3,4,5]
print(map(f2,l))

运行结果:

[1, 4, 9, 16, 25]

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

    2、 把最终所有的计算结果合并成一个list。

reduce()函数

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

def f(x,y):
    return x + y
print(reduce(f,[1,2,3,4,5],10))

运行结果:

25

注:上面运行过程1+2+3+4+5 最后10是一个默认值,最终在执行一次
传入的函数必须接受2个参数
把可迭代对象的前两个参数作为函数的实参,传入函数f中
把每次f运算的结果作为一个实参,可迭代对象的下一个元素作为另一个实参,传入函数f中
一次类推,最终得到结果

filter()函数

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

a = [1,2,3,4,5,6,7,8]
def is_odd(x):
    return x%2 == 1
print(is_odd(5))
print(filter(is_odd,a))

运行结果:

True
[1, 3, 5, 7]

注:
1、list的元素以此传入函数is_odd
2、is_odd判断每个元素是否符合条件,把符合条件的留下,不符合条件的舍弃
3、把最终所有符合条件的元素组成一个新的列表
函数每次把可迭代对象的元素传入进去,如果返回为true,则保留该元素,如果返回为false则不保留该元素

sorted()函数

sorted(...)
sorted(iterable, cmp=None, key=None, reverse=False) --> new sorted list
对字典排序
按照value进行排序
dic = dict(a=1,b=10,c=3,d=9)
dic = dict(a=1,b=10,c=3,d=9)
print(sorted(dic.iteritems(),key=lambda d:d[1],reverse=False))
结果:[(‘a‘, 1), (‘c‘, 3), (‘d‘, 9), (‘b‘, 10)]

匿名函数:没有名字的函数

lambda()函数是一种快速定义单行的最小函数,可用在任何需要函数的地方
普通函数:

def fun(x,y):
    return x*y
lambda函数:
r = lambda x,y:x*y
print(r(2,3))
print(type(r))

运行结果:

6
<type ‘function‘>
时间: 2024-10-19 02:40:33

(三)3-4 Python的高阶函数和匿名函数的相关文章

高阶函数和匿名函数

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 基础第十四天(内置函数和匿名函数)

今天主要内容 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内置函数和匿名函数

内置函数 68个内置函数.它们就是python提供给你直接可以拿来使用的所有函数.     Built-in Functions     abs() dict() help() min() setattr() all() dir() hex() next() slice() any() divmod() id() object() sorted() ascii() enumerate() input() oct() staticmethod() bin() eval() int() open()

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

python之路——5、内置函数和匿名函数

阅读目录 楔子 内置函数 匿名函数 本章小结 返回顶部 楔子 在讲新知识之前,我们先来复习复习函数的基础知识. 问:函数怎么调用? 函数名() 如果你们这么说...那你们就对了!好了记住这个事儿别给忘记了,咱们继续谈下一话题... 来你们在自己的环境里打印一下自己的名字. 你们是怎么打的呀? 是不是print('xxx'),好了,现在你们结合我刚刚说的函数的调用方法,你有没有什么发现? 我们就猜,print有没有可能是一个函数? 但是没有人实现它啊...它怎么就能用了呢? 早在我们“初识函数”的

python——内置函数和匿名函数

内置函数 接下来,我们就一起来看看python里的内置函数.截止到python版本3.6.2,现在python一共为我们提供了68个内置函数.它们就是python提供给你直接可以拿来使用的所有函数.这些函数有些我们已经用过了,有些我们还没用到过,还有一些是被封印了,必须等我们学了新知识才能解开封印的.那今天我们就一起来认识一下python的内置函数.这么多函数,我们该从何学起呢?     Built-in Functions     abs() dict() help() min() setat

python之内置函数,匿名函数

什么是内置函数? 就是Python给你提供的,拿来直接用的函数,比如print,input等等.其实就是我们在创建.py的时候python解释器所自动生成的内置的函数,就好比我们之前所学的作用空间 内置空间就是python文件在创建的时候python解释器所自动创建的 重要的 内置函数: *** eval: eval:执行字符串类型的代码,并返回最终结果.(其实就是对字符串内的类型进行操作 比如你字符串内事int类型的  相加相乘之类的  直接进行操作 如果字符串内事列表或者字典直接把列表字典给

python基础之内置函数与匿名函数

python基础之内置函数与匿名函数 内置函数68个如下图 重点的关注的内置函数len,sorted,enumerate,all,any,zip,filter,map,reversed,slice len(o):参数为O,返回数据类型的长度sorted():      sorted(iterable, cmp=None, key=None, reverse=False) --> new sorted list iterable:是可迭代类型; cmp:用于比较的函数,比较什么由key决定; ke

golang 函数二 (匿名函数和闭包)

匿名函数就是没有定义函数名称的函数.我们可以在函数内部定义匿名函数,也叫函数嵌套. 匿名函数可以直接被调用,也可以赋值给变量.作为参数或返回值.比如: func main(){     func(s string){     //直接被调用         println(s)     }("hello gopher!!!")     /*     func(s string){     //未被调用         println(s)     }     */ } func mai