美文网首页ITS·黑客
Python学习笔记六-高阶函数

Python学习笔记六-高阶函数

作者: 6156fc232124 | 来源:发表于2017-04-13 18:15 被阅读84次

函数本身可以直接赋值给变量,那进一步推理,可以得到,函数名其实就是一个变量,这个变量可以通过其他的变量来赋值替换。

当然,函数名也可以指向其他对象,比如一个数字,但是,单纯对该函数名的赋值只能作用于该函数实际定义在的模块中,如果要修改函数变量的指向在其他模块中也生效,要找到定义模块,进行更改。

例如:

abs定义在import builtins模块中,完全修改时,用 import builtins; builtins.abs = 10

一个函数接收另一个函数作为参考,这种函数成为高阶函数。简单说,其实就是让函数的参数接收别的函数,比如abs(-5)编程f(-5),诸如此类的!

一、map( )用法:可以计算任意复杂的函数,比如计算、转化为字符串等。

map(函数名, [序列中的每个元素] ),结果作为新的惰性序列Iterator返回。然后通过list( )把整个序列呈现出来。

二、reduce( )函数必须接收2个参数,类似于符合函数的算法,把结果继续和序列的下一个元素做累积计算。

reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4)

例子:

※lambda函数的用法

三、filter( )函数:过滤序列。根据返回值的Ture或者False决定保留还是丢弃元素。用法和map( )相似。

filter求素数的方法:埃氏筛法

列出从2开始的自然数集,然后取2,把2的倍数刷掉,再取3,把3的倍数刷掉,再取5,把5的倍数刷掉,不断取新数列的第一个数刷掉他的倍数即可。

Python实现该算法的过程:

1.构造一个从3开始的奇数序列:(生成器,无限序列)

def_odd_iter():    n =1whileTrue:        n = n +2yieldn

2.然后定义一个筛选函数:

def_not_divisible(n):returnlambdax: x % n >0

3.最后,定义一个生成器,不断返回下一个素数:

defprimes():yield2it = _odd_iter()# 初始序列whileTrue:        n = next(it)# 返回序列的第一个数yieldn        it = filter(_not_divisible(n), it)# 构造新序列

这个生成器先返回第一个素数2,然后,利用filter()不断产生筛选后的新的序列。

由于primes()也是一个无限序列,所以调用时需要设置一个退出循环的条件

4. 设置一个退出循环条件:

# 打印1000以内的素数:forninprimes():

ifn <1000:

print(n)

else:

break

☆filter( )返回的结果是Iterator,为惰性序列,所以使用惰性计算,因此只有在filter( )取结果的时候,才会真正进行筛选并返回下一个筛选的元素。

四、sorted( )函数可以对list进行排序,并且可以通过key函数来实现自己想做的排序。

例如:

默认情况下,对于字符串的排序,Python按照ASCII的大小进行比较,从小到大排序。比较字符的时候,如果忽略大小写,就用key把字符全部变成大写或者全部变成小写。

一般情况下,sorted的排序都是从小到大,如果要反过来从大到小的话,就加上 reverse=True 即可。

例如:

以上,为高阶函数的几个重要函数的总结。

相关文章

  • Python ☞ day 4

    Python学习笔记之 (set)集合 & 迭代器 & 函数 & 匿名函数 & 高阶函数 set set:类似di...

  • Python学习笔记六-高阶函数

    函数本身可以直接赋值给变量,那进一步推理,可以得到,函数名其实就是一个变量,这个变量可以通过其他的变量来赋值替换。...

  • Python学习笔记

    参考文章 Python学习笔记[2] 一步一步教你认识Python闭包 高阶函数 特殊的函数,特殊在能将函数作为参...

  • python 函数式编程之高阶函数map/reduce

    python学习笔记,特做记录,分享给大家,希望对大家有所帮助。 高阶函数map/reduce Python内建了...

  • python 函数式编程之高阶函数filter

    python学习笔记,特做记录,分享给大家,希望对大家有所帮助。 高阶函数filter Python内建的filt...

  • python 函数式编程之返回函数

    python学习笔记,特做记录,分享给大家,希望对大家有所帮助。 返回函数 函数作为返回值 高阶函数除了可以接受函...

  • python lambda

    lambda是匿名函数。前面我们提到python高阶函数,学习了map,reduce,filter等python内...

  • 大师兄的Python学习笔记(五): 常用库之os包

    大师兄的Python学习笔记(四): Python的内置函数大师兄的Python学习笔记(六): 常用库之sys包...

  • python 函数式编程之高阶函数sorted

    python学习笔记,特做记录,分享给大家,希望对大家有所帮助。 高阶函数sorted 排序算法 排序也是在程序中...

  • python装饰器

    装饰器简述 要理解装饰器需要知道Python高阶函数和python闭包,Python高阶函数可以接受函数作为参数,...

网友评论

    本文标题:Python学习笔记六-高阶函数

    本文链接:https://www.haomeiwen.com/subject/dexiattx.html