博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
函数式编程
阅读量:6471 次
发布时间:2019-06-23

本文共 847 字,大约阅读时间需要 2 分钟。

hot3.png

map/reduce

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

#!/usr/bin/env python# -*- coding:utf-8 -*-def f(x):    return x * xr = map(f, [1, 2, 3, 4, 5, 6, 7, 8, 9])result = list(r)print(result)

reduce把一个函数作用在一个序列[x1, x2, x3, ...]上,这个函数必须接收两个参数,reduce把结果继续和序列的下一个元素做累积计算,其效果就是:

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

例:把序列[1, 3, 5, 7, 9]变换成整数13579

from functools import reducedef fn(x, y):    return x * 10 + yresult = reduce(fn, [1, 3, 5, 7, 9])print(result)

filter()把传入的函数依次作用于每个元素,然后根据返回值是True还是False决定保留还是丢弃该元素

例如,在一个list中,删掉偶数,只保留奇数

def is_odd(n):    return n % 2 == 1result = list(filter(is_odd, [1, 2, 4, 5, 6, 9, 10, 15]))print(result)

sorted()函数也是一个高阶函数,它还可以接收一个key函数来实现自定义的排序,例如按绝对值大小排序

result = sorted([36, 5, -12, 9, -21], key=abs)print(result)

转载于:https://my.oschina.net/u/3646781/blog/1587026

你可能感兴趣的文章
linux中yum源安装dhcp,24.Linux系统下动态网络源部署方法(dhcpd)
查看>>
C#技术------垃圾回收机制(GC)
查看>>
漫谈并发编程(三):共享受限资源
查看>>
【转】github如何删除一个仓库
查看>>
HDOJ-1010 Tempter of the Bone
查看>>
JavaNIO基础02-缓存区基础
查看>>
日本开设无人机专业,打造无人机“人才市场”
查看>>
190行代码实现mvvm模式
查看>>
cobbler初探------实现自动安装centos6.4
查看>>
兼容几乎所有浏览器的透明背景效果
查看>>
jeesite 框架搭建与配置
查看>>
Adb移植(一)简单分析
查看>>
Linux VNC server的安装及简单配置使用
查看>>
阿里宣布开源Weex ,亿级应用匠心打造跨平台移动开发工具
查看>>
Android项目——实现时间线程源码
查看>>
招商银行信用卡重要通知:消费提醒服务调整,300元以下消费不再逐笔发送短信...
查看>>
python全栈_002_Python3基础语法
查看>>
C#_delegate - 调用列表
查看>>
jQuery.extend 函数详解
查看>>
[转]Windows的批处理脚本
查看>>