匿名函数进阶

前一章已经说了匿名函数,匿名函数还可以和其他内置函数结合使用

1.map

map():映射器,映射

list(map(lambda x:x*2,range(10)))  #把range产生的数字映射进lambda函数里进行计算

结果:

注意:mapmap(function, sequence[, sequence, ...])接受的参数,第一个是函数,第二个,第三个可选参数也是序列

当第一个参数不为函数时:

因为把函数放进去,即代表要进行运算处理,设置为None即表示不做计算

说到这,说一下reduce()函数

2.reduce

reduce(function, sequence[, initial])看这个参数就知道和map函数很类似对吧?

看例:

有没有发现什么?是的,此时它就是用来计算总数的

还有,reduce的第三个参数是一个基数,用来设置起始值的:

而这些所有计算最关键的都在于传入的函数f,它是设定怎么计算的,比如我要让计算做平方:

报错了,提示的是reduce必须给两个参数,我确实给了两个参数,但是还是报错啊?

再结合前面的例子,其实说的是reduce接受的函数必须接受两个参数,并不是指的reduce自身接受两个参数,所以,在使用reduce的时候,必须事先考虑好怎么计算,并不是什么都可以计算的

reduce可以用来操作阶乘:

比如5的阶乘:

那么既然都说到这了,顺便说说filter函数

3.filter函数

filter(function or None, sequence):过滤器,筛选为真的参数

例:

再看:

python2下:

python3下:

所以,python2和python3下使用filter是不同的,记住就行

同样,filter函数也可以结合lambda匿名函数来计算:

是不是方便很多?这就是匿名函数的好处

那么以上的几个函数,其实就是函数式编程的体现(你以为我会真的只是简单对匿名函数的补充?哈哈,这只是套路需要/滑稽)

函数式编程

1.什么是函数式编程?

又称泛函编程,是一种编程范型。它将计算机运算视为数学上的函数计算,并且避免可变状态以及可变数据

2.哪些是函数式编程:

函数式编程语言最重要的基础就是lambda演算,而且lambda演算的函数可以接受函数当作输入和输出

3.支持函数式编程的语言挺多的,但python支持的函数式编程有限:

1):map(function, sequence[, sequence, ...]):

将函数func作用于给定序列的每个元素,并用一个列表来提供返回值,如果func为None,则直接将后面的参数中序列中的每个元素依次组成一个新的列表,如果元素数量不对应,直接以None代替

2):reduce(function, sequence[, initial]):
将二元函数(两个参数)作用于seq序列的元素,每次携带一对(之前的结果以及下一个序列元素),依次将现有的结果和下一个值按照二元函数的计算规则计算,最后得到一个值返回,如果初始值iniial给定,则以这个初始值作为基数和序列中的第一个元素计算,得到结果再与下一个序列元素计算,依次类推得到一个值返回

3):filter(function or None, sequence):

调用一个会返回布尔值的func来遍历每个seq中的元素,返回一个使func返回值为True的元素组成的序列

4.函数式编程有如下好处:

1):代码更简洁,符合python宗旨
2):数据集操作,输入和输出都可以一起
3):没有循环体,减少临时变量,逻辑变得简洁
4):代码变成了在描述你要干什么,而不是怎么去干。

洗礼灵魂,修炼python(25)--自定义函数(6)—从匿名函数进阶话题讲解中解析“函数式编程”的更多相关文章

  1. Python第七天 函数 函数参数 函数里的变量 函数返回值 多类型传值 函数递归调用 匿名函数 内置函数

    Python第七天   函数  函数参数   函数里的变量   函数返回值  多类型传值     函数递归调用   匿名函数   内置函数 目录 Pycharm使用技巧(转载) Python第一天   ...

  2. Python的程序结构[4] -> 函数/Function[2] -> 匿名函数

    匿名函数 / Anonymous Function 匿名函数是一种不需要绑定函数名的函数 (i.e. functions that are not bound to a name).匿名函数通过 la ...

  3. PYTHON 学习笔记2 流程控制工具以及函数定义、匿名函数

    前言 在上一节的学习中.已经介绍了几种基本类型.包括字符串的定义,以及字符串中索引.切片.字符串拼接的使用方法.以及基本的整形数据运算.一些之前都没有了解过的运算符.比如 ** 乘方 //整数除法等. ...

  4. day16_函数作用域_匿名函数_函数式编程_map_reduce_filter_(部分)内置函数

    20180729    补充部分代码 20180727    上传代码 #!/usr/bin/env python # -*- coding:utf-8 -*- # ***************** ...

  5. 可爱的 Python : Python中的函数式编程,第三部分

    英文原文:Charming Python: Functional programming in Python, Part 3,翻译:开源中国 摘要:  作者David Mertz在其文章<可爱的 ...

  6. python----内置函数2与匿名函数

    1.迭代器生成器相关 range:创建一个可迭代对象,一般与for混合使用,可设置步长. for i in range(0,10,2): #步长2范围为0-10不包括10 print(i) # 0 2 ...

  7. JavaScript 函数声明,函数表达式,匿名函数,立即执行函数之区别

    函数声明:function fnName () {-};使用function关键字声明一个函数,再指定一个函数名,叫函数声明. 函数表达式 var fnName = function () {-};使 ...

  8. JS函数定义与匿名函数的调用

    一.函数声明.函数表达式.匿名函数 函数声明:function fnName () {…};使用function关键字 声明一个函数,再指定一个函数名,叫函数声明. 函数表达式 var fnName ...

  9. 深入理解,函数声明、函数表达式、匿名函数、立即执行函数、window.onload的区别.

    一.函数声明.函数表达式.匿名函数1.函数声明:function fnName () {…};使用function关键字声明一个函数,再指定一个函数名,叫函数声明. 2.函数表达式 var fnNam ...

随机推荐

  1. UFLDL 教程学习笔记(二)反向传导算法

    UFLDL(Unsupervised Feature Learning and Deep Learning)Tutorial 是由 Stanford 大学的 Andrew Ng 教授及其团队编写的一套 ...

  2. laravel框架的安装与配置

    正常安装: 1.composer.(https://getcomposer.org/Composer-Setup.exe) 安装之前要确保目录:wamp\bin\php\php5.4.3下的php.i ...

  3. 批量去除文件的BOM头

    <?php class KillBom{ //定义扩展名 public static $m_ext = ['txt','php','js','css']; /** * 传入一个任意文件,自动区分 ...

  4. Ubuntu/CentOS 系统上安装与配置Nginx

    一.在线安装: Ubuntu:sudo apt-get install nginx CentOS: sudo yum install nginx 二.安装后的位置: 1.服务地址:/etc/init. ...

  5. ​​ ​​我的Java秋招面经大合集(包含BAT头条网易等公司)

    ​ 微信公众号[程序员江湖] 作者黄小斜,斜杠青年,某985硕士,阿里 Java 研发工程师,于 2018 年秋招拿到 BAT 头条.网易.滴滴等 8 个大厂 offer,目前致力于分享这几年的学习经 ...

  6. 高可用Hadoop平台-Oozie工作流

    1.概述 在开发Hadoop的相关应用使用,在业务不复杂,任务不多的情况下,我们可以直接使用Crontab去完成相关应用的调度.今天给大家介绍的是统一管理各种调度任务的系统,下面为今天分享的内容目录: ...

  7. 深入C#并行编程(1) -- 了解线程

    一.操作系统用进程(Processe)分隔正在执行的程序,用线程(Thread)作为操作系统分配处理器时间的基本单元,进程上下文中可以运行多个线程,进程的所有线程共享其虚拟地址空间,所有线程均可执行程 ...

  8. 可重入锁 & 不可重入锁

    可重入锁指同一个线程可以再次获得之前已经获得的锁,避免产生死锁. Java中的可重入锁:synchronized 和 java.util.concurrent.locks.ReentrantLock. ...

  9. orcal10g下载地址

    http://download.oracle.com/otn/nt/oracle10g/10201/102010_win64_x64_database.zip https://updates.orac ...

  10. thinkphp的自动生成

    第一,在index.php里定义 define('BIND_MODULE','Admin'); //自动生成Admin目录下的结构(默认生成IndexController) define('BUILD ...