匿名函数进阶

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

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. Xamarin.Android 关于so包报错问题

    问题描述:使用so包时报错. 解决方法: 1.保证 libs > armeabi 和 armeabi-v7a 中的so包一致. 2.去掉 x86,x86_64,arm64-v8a. 3. so的 ...

  2. 13-02 Java 数组高级算法,Arrays类

    冒泡排序 冒泡排序原理 冒泡排序代码: package cn.itcast_01; /* * 数组排序之冒泡排序: * 相邻元素两两比较,大的往后放,第一次完毕,最大值出现在了最大索引处 */ pub ...

  3. 手把手教您定制化Centos6.x安装界面

    1.获取安装界面代码      挂载image/install.img:mount image/install.img /mnt/5 -o loop      复制挂载后的代码至self_intall ...

  4. salesforce零基础学习(九十)项目中的零碎知识点小总结(三)

    本次的内容其实大部分人都遇到过,也知道解决方案.但是因为没有牢记于心,导致问题再次出现还是花费了一点时间去排查了原因.在此记录下来,好记性不如烂笔头,争取下次发现类似的现象可以直接就知道原因.废话少说 ...

  5. HDFS集群数据不均衡处理

    一.概述 公司使用是自己搭建的hadoop集群,版本2.7.3,最近发现出现了hdfs数据存储不均衡的现象,其中有一个datanode使用了65%,而有一个只使用了20%.hadoop集群使用的时间长 ...

  6. #13 让代码变得Pythonic

    前言 在学习Python的过程中,肯定听说过这么一个词:Pythonic,它的意思是让你的代码很Python! 一.列表生成式 前面有一节专门讲解了Python的列表,其灵活的使用方法一定让你陶醉其中 ...

  7. 自定义Fiddler插件二

    在之前博客自定义Fiddler插件一中主要是实现了IRequestInspector2接口,这个接口主要是针对单个请求的,在写接口测试案例的时候也是对一个接口进行处理,如果想批量进行操作,那就可以使用 ...

  8. 初识SqlLite ---.net连接数据库

    Sqlite 是一款轻量级的关系型数据库,以小巧和嵌入式闻名.以前只是听说,现在终于忍不住要尝试下.本文的初衷是为.net平台的使用者提供帮助. Sqlite有专门为VS2010开发的程序包,大家可以 ...

  9. Sublime Text3 远程 Linux

    ctrl+shift+p快捷键 ,打开命令面板 搜索命令 Install Packages,选中,Enter 稍等几秒,重新出现了面板,搜索sftp插件,选中 Enter 显示安装成功,提示你如何使用 ...

  10. C# 函数式编程:LINQ

    一直以来,我以为 LINQ 是专门用来对不同数据源进行查询的工具,直到我看了这篇十多年前的文章,才发现 LINQ 的功能远不止 Query.这篇文章的内容比较高级,主要写了用 C# 3.0 推出的 L ...