Python学习笔记 -- 函数式编程之高阶函数

函数式编程
函数式编程(Functional Programming),是一种抽象程度很高的编程范式,纯粹的函数式编程语言编写的函数没有变量。因此,任意一个函数,只要输入是确定的,输出就是确定的。

函数式编程是一种"编程范式"(programming paradigm)。它属于"结构化编程"的一种,主要思想是把运算过程尽量写成一系列嵌套的函数调用。

函数式编程的一个特点就是,允许把函数本身作为参数传入另一个函数,还允许返回一个函数!Python对函数式编程提供部分支持。由于Python允许使用变量,因此,Python不是纯函数式编程语言。

更多内容

廖雪峰Python教程 函数式编程
函数式编程初探 - 阮一峰
函数式编程 - 看云
函数式编程 - 百度百科
高阶函数
函数式编程中,可以将函数当作变量一样使用。接受函数为参数,或者把函数作为结果返回的函数称为高阶函数(Higher-order Functions) 。

def double(x):
return 2 * x

def square(x):
return x * x

def func(g, arr):
return [g(x) for x in arr]

arr1 = func(double, [1, 2, 3, 4])
arr2 = func(square, [1, 2, 3, 4])
arr1
[2, 4, 6, 8]

arr2
[1, 4, 9, 16]
map()/reduce()/filter()/sorted() /apply() 是 Python 中较为常用的高阶函数,它们为函数式编程提供了不少便利。

Python 3 中,map 和 filter 还是内置函数,但是由于引入了列表推导和生成器表达式,它们变得没那么重要了。列表推导或生成器表达式具有 map 和 filter 两个函数的功能,而且更易于阅读。apply 函数在Python 2.3 中标记为过时,在Python 3 中移除了,因为不再需要它了。如果想使用不定量的参数调用函数,可以编写 fn(*args, **keywords),不用再编写 apply(fn, args,kwargs)。

map()
map 函数将传入的函数依次作用到序列的每个元素,并把结果作为新的 Iterator 返回。map 函数语法:

map(function, iterable, …)

参数 —— function : 函数 ; iterable : 一个或多个序列

返回值 —— Python 2.x 返回列表; Python 3.x 返回迭代器(map)

def square(x): # 计算平方数
return x ** 2

map(square, [1,2,3,4,5]) # 计算列表各个元素的平方
<map object at 0x000001B9F81ADEB8>

map(lambda x: x ** 2, [1, 2, 3, 4, 5]) # 使用 lambda 匿名函数

[1, 4, 9, 16, 25] # python2输出结果

<map object at 0x000001B9F81ADEB8> # python3输出结果(可使用list()函数对map函数返回结果进行转换)

list(map(lambda x: x ** 2, [1, 2, 3, 4, 5]))
[1, 4, 9, 16, 25]

map实现list的值的格式批量转换

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值