Python的高级特性4:函数式编程
函数式编程的核心就是把函数当成对象来进行编程。
有两个常用到的方法:map/reduce,filter,其中map和filter是内建方法,而reduce不是,所以需要import相关模块。
map接收两个参数,第一个参数是函数(处理办法),第二个参数是一个可迭代对象,而map可以把第二个参数的变量映射到函数中一一进行处理,结果以list形式返回。
In [147]: def f(x):
.....: return x*x
.....: In [148]: r = map(f,[1,2,3,4,5,6]) In [149]: list(r)
Out[149]: [1, 4, 9, 16, 25, 36]
reduce接收两个参数,第一个参数是函数(处理办法),第二个参数是一个可迭代对象,而reduce可以把第二个参数每一次next方法执行的结果映射到函数中进行处理,然后返回一个计算后的值。其实质就是不断的嵌套把此层函数作为下一层函数的参数直到最后。
In [151]: from functools import reduce In [152]: def add(x,y):
.....: return x+y
.....: In [153]: reduce(add,[1,3,4,7,9])
Out[153]: 24 In [154]: reduce(add,[1])
Out[154]: 1
filter接收两个参数,第一个参数是函数(处理办法),第二个参数是一个可迭代对象,而map可以把第二个参数的变量映射到函数中,根据true/false过滤,结果以list形式返回。
In [156]: def is_odd(n):
.....: return n % 2 == 1
.....: In [157]: list(filter(is_odd, (1, 2, 4, 5, 6, 9, 10, 15)))
Out[157]: [1, 5, 9, 15]
Python的高级特性4:函数式编程的更多相关文章
- Python的高级特性7:闭包和装饰器
本节跟第三节关系密切,最好放在一起来看:python的高级特性3:神奇的__call__与返回函数 一.闭包:闭包不好解释,只能先看下面这个例子: In [23]: def outer(part1): ...
- 简学Python第三章__函数式编程、递归、内置函数
#cnblogs_post_body h2 { background: linear-gradient(to bottom, #18c0ff 0%,#0c7eff 100%); color: #fff ...
- Python的高级特性8:你真的了解类,对象,实例,方法吗
Python的高级特性1-7系列是本人从Python2过渡3时写下的一些个人见解(不敢说一定对),接下来的系列主要会以类级为主. 类,对象,实例,方法是几个面向对象的几个基本概念,其实我觉得很多人并不 ...
- python的高级特性:切片,迭代,列表生成式,生成器,迭代器
python的高级特性:切片,迭代,列表生成式,生成器,迭代器 #演示切片 k="abcdefghijklmnopqrstuvwxyz" #取前5个元素 k[0:5] k[:5] ...
- Python学习笔记二:函数式编程
1:Python中,内置函数名相当于一个变量,指向内置函数.所以可以通过函数名调用相应函数,也可以给函数名赋值,改变它的内容,如:可以把另一个函数变量赋值给它,那它就指向了所赋值的函数了. 2:高级函 ...
- Python学习札记(二十) 函数式编程1 介绍 高阶函数介绍
参考: 函数式编程 高阶函数 Note A.函数式编程(Functional Programming)介绍 1.函数是Python内建支持的一种封装,我们通过一层一层的函数调用把复杂任务分解成简单的任 ...
- python学习第十一天 -- 函数式编程
在介绍函数式编程之前,先介绍几个概念性的东西. 什么是函数式编程? 函数式编程的特点: 1.把计算视为函数而非指令; 2.纯函数式编程:不需要变量,没有副作用,测试简单; 3.支持高阶函数,代码简洁. ...
- python函数高级特性
掌握了Python的数据类型.语句.函数,基本可以编写出很多有用的程序了.但是Python中,代码不是越多越好,而是越少越好.代码不是越复杂越好,而是越简单越好.基于这一思想,我们来介绍python中 ...
- Python 进阶(一)函数式编程
来自慕课网: 简介: 函数:function ,在入门课程已学 函数式:functional,一种编程范式 函数式编程是一种抽象计算的编程模式,函数≠函数式,好比:计算≠计算机
随机推荐
- android中Post方式发送HTTP请求
Post方式比Get方式要复杂一点,因为该方式需要将请求的参数放在http请求的正文中,所以需要构造请求体. 步骤: 1.构造URL URL url = new URL(PATH); 2.设置连接 H ...
- mac ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib /mysql/mysql.sock' (111)
之前装了mysql,今天打开mysql的时候报了个Can't connect to local MySQL server through socket '/var/lib /mysql/mysql.s ...
- objective-c系列-NSString
C中没有字符串变量的概念 只有一个字符串常量的概念 即: “abcd” 在c中,用一个字符串指来指向一个内存地址, 然后从该地址往后,遇到'\0'结束,这一段 内存就表述为一个字符串 char * ...
- KVC与KVO的实现原理
|KVC的用法 1.KVC既键值编码(Key Value Coding),基于NSKeyValueCoding协议,它是以字符串的形式来操作对象的成员变量,也就是通过字符串key来指定要操作的成员变量 ...
- post请求报文
POST /02_WEB_HTTP/index.html HTTP/1.1 Accept: application/x-ms-application, image/jpeg, application/ ...
- 理解并自定义HttpHandler
前言 之前从网上找了几篇讲解如何自定义HttpHandler的文章,依葫芦画瓢却一直没成功过.经过上一篇<asp.net管道模型(管线模型)之一发不可收拾>的总结,对管道模型和请求/响应过 ...
- const,readonly 这些你真的懂吗? 也许会被面试到哦。。。
首先不可否认,这些在面试上会经常被面试官问起,但是你回答的让面试官满意吗?当然如果你知道了这些原理,或许你就不 怕了.既然说到了原理,我们还是从MSDN说起. 一:值得推敲的几个地方 1.先来看看ms ...
- VMWare克隆之后设置eth0
[root@hadoop001 ~]# cd /etc/udev/rules.d/ [root@hadoop001 rules.d]# vim 70-persistent-net.rules 将eth ...
- HBase应用开发回顾与总结系列之三:RowKey行键生成器工具
所谓RowKey行键生成器,是指通过软件工具制定行键生成策略,并可将策略信息保存成本地策略文件,待需要时再将本地策略文件序列化成行键生成策略对象,传入数据行信息后可自动生成RowKey行键. 那么 ...
- cocos2d之json使用实例
前端使用: json管理器中函数解析: 对宠物技能map的定义: 宠物技能表单--数据的基础定义: