Python 学习笔记之:函数式编程(使用 lambda(),map(),reduce(),filter())

1. map(), lambda

如果要对一个列表内的每个元素都进行平方,有如下方法:
① 第一种:

a = list(range(1,10))
b = [i**2 for i in a]
print(b)

[1, 4, 9, 16, 25, 36, 49, 64, 81]

② 第二种:

a = list(range(1,10))
c = map(lambda x:x**2,a)
c = list(c)
print(c)

[1, 4, 9, 16, 25, 36, 49, 64, 81]

第二种方法我们称之为:函数式编程。
第一种方法是指定了一个 i 代表 列表 a 中的每一个元素;但是第二种方法中的 lambda x 是直接针对 列表a,然后再通过 map() 函数映射到列表a 中的每一个元素。最终要通过 list() 才能将最终的 c 打印出来,因为在python3 中只有其他函数调用 map 函数的才能返回结果

再举一个例子:

a = list(range(1,10))
b = list(range(10,20))

c = map(lambda x,y:x*y,a,b)
print(list(c))

[10, 22, 36, 52, 70, 90, 112, 136, 162]

数组对应的元素进行相乘

2. reduce(), lambda

从上面的例子中可以知道 map函数相当于建立映射,在第一个例子中把 x--> a 建立映射,在第二个例子中把 x, y ---> a, b 建立映射。

但是 reduce() 函数是进行递归运算的函数;reduce命令首先将列表的前两个元素作为函数的参数进行运算,然后将运算结果与第三个元素一起作为函数的参数进行运算;同样地,再把结果与第四个元素一起作为函数的参数进行运算,直到列表结束。下面通过举例来看:

from functools import reduce

a = list(range(1,10))
b = reduce(lambda x,y:x*y,a)
print(b)

362880

因为这个是进行递归运算,所以最终的结果b 不是一个列表,而是一个数字,所以不用再用 list 函数进行处理

3. filter(), lambda

filter() 函数是用于筛选符合条件的函数,举例来看:

a = list(range(1,10))
b = filter(lambda x:x**2<5 and x**3>7,a)
print(list(b))

结果:

C:\Users\dell\Anaconda3\python.exe "D:/pycharm project/test2.py"
[2]

Process finished with exit code 0

最终得到的结果也需要使用list函数进行处理,理由同map函数一样。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

暖仔会飞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值