Python的函数式编程

Python中的for-in结构跟其他编程语言中的非常相似,但实际上应避免使用显式循环。python提供集中替代方法,指定了诸如函数式编程等编程技巧。
python提供的用于函数式编程开发的函数有:

  • map(fuction,list),映射函数
  • filter(fuction,list),过滤函数
  • reduce(fuction,list),规约函数
  • lambda函数
  • 列表生成式

前面讲过的用for循环对每个元素执行某一操作,然后把结果汇集起来。其实同样可以用map()函数来实现

>>>items=[1,2,3,4,5]
>>>def inc(x):  return x+1
...
>>>list(map(inc,items))
[2,3,4,5,6]

上述例子中python将函数作为第一个参数传递进来,其实python允许你使用lamba函数在第一个参数中定义函数。这样能大幅精简代码,前面的代码结构可以被浓缩为一行代码

>>>list(map((lambda x:x+1),items))
[2,3,4,5,6]

其他两个函数filter()和reduc()的工作原理与之类似。filtër()函数只抽取函数返回结果为True的列表元素。reduce()函数对列表所有元素依次计算后返回唯一结果。使用reduce()前,需要导入functools模块

>>>list(filter((lambda x:x<4),items))
[1,2,3]
>>>from functools import reduce
>>>reduce((lambda x,y:x/y),items)
0.008333333333333333333

这两个函数实现了用for循环所能实现的功能。
函数编程式的最后一个概念叫做列表生成式。这个概念可以用来以非常自然和简单的方式创建列表。

>>>S=[x**2 for x in range(5)]
>>>S
[0,1,4,9,16]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值