python笔记5:函数式编程

Posted W.Yentl

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python笔记5:函数式编程相关的知识,希望对你有一定的参考价值。

5 函数式编程(即高阶函数,将函数作为参数传入)

map():

map()函数接收两个参数,一个是传入函数,一个是Iterable,map将传入函数依次作用到序列的每个元素,并把结果作为新的Iterator返回。

如:map(f, [x1, x2, x3, x4]) = [f(x1),f(x2),f(x3),f(x4)] -->把f(x)作用在list的每一个元素并将结果生成一个新的list

reduce():

如:reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4) -->将f(x)作用在一个序列上,并将结果继续和序列的下一个元素做累积计算

filter():

filter()用于过滤序列,

如:filter(f, [x1, x2, x3, x4]) -->把筛选函数依次作用于序列的每个元素,然后根据返回值是True/False决定保留/丢弃该元素。

sorted():

sorted()用于排序 (内幕:对于元素 x,y,若x < y,则返回‐1,若x == y,返回0,若x > y,返回1。这样,排序算法就不用关心具体的比较过程,而是根据比较结果直接排序。)

sorted(iterable , key=函数 , reverse=True) --> key函数作用于list中的每个元素,根据其返回结果进行排序,第三个参数为反向排序时使用。
例子:L = [(Bob, 75), (Adam, 92), (Bart, 66), (Lisa, 88)]
    print(sorted(L,key=lambda i:i[0])) #按名字排序
    print(sorted(L,key=lambda i:i[1])) #按成绩排序

闭包 Closure:

闭包 Closure用于将函数作为结果值返回
  返回闭包(某函数)时牢记:该函数并未执行,返回函数中不要引用任何可能会变化的变量。(即包在里面的函数,不要引用外部函数的任何循环变量)
  如果一定要引用循环变量,则再创建一个函数,用该函数的参数绑定循环变量当前的值

lambda函数:

匿名函数(lambda函数):

(语法)lambda [arg1 [,arg2,.....argn]]:expression

如:lambda x: x * x --> 冒号前是参数,可以有多个,用逗号隔开,冒号右边的返回值。

易错:fs = [(lambda n: i + n) for i in range(10)]与 fs = [(lambda n, i=i : i + n) for i in range(10)]

注意:1.使用lambda,lambda内不要包含循环;

   2.lambda只是为了减少单行函数的定义而存在的;

   3.可用for...in...if来完成的,坚决不用lambda。




以上是关于python笔记5:函数式编程的主要内容,如果未能解决你的问题,请参考以下文章

python学习笔记---函数式编程

Python学习笔记八:文件操作(续),文件编码与解码,函数,递归,函数式编程介绍,高阶函数

Python基础笔记:函数式编程:高阶函数返回函数匿名函数装饰器偏函数

Python实用笔记 (15)函数式编程——装饰器

Python函数式编程笔记

笔记效率之门——Python中的函数式编程技巧