函数式编程中常用的函数(总结)

一 函数式编程理解

1.函数式编程的含义:

函数式编程是一种编程的基本风格,就是构建程序的结构和元素的方式。函数式编程将计算过程看做是数学函数,也就是可以使用表达式编程。在函数的代码中,函数的返回值只以来传入函数的参数,因此使用相同的参数调用2次就会得到相同的结果。

如果说这段话很难理解,我觉得可以这么想,函数式编程就是一种函数,或者是一种结构,在该结构中,将函数和函数的参数都作为参数。

2.函数式编程具有的优点:
a.便于进行单元测试
b.便于调试
c.适合并行执行

二 常用的函数式编程

1.Lambda表达式
Lambda表达式是一种匿名函数,它的结构如下

lambda 参数列表:函数返回值或表达式语句

Lambda表达式可以做如下功能:
a.定义函数
例如如下代码:

getsum = lambda x,y : x+y

该结构和如下代码是一样的:

def getsum(x,y):
    return x+y

使用lambda表达式定义完成函数后,可以直接引用该函数,如下代码:

getsum = lambda x,y : x+y
print(getsum(1,2))

结果会显示结果为:3

b.构建lambda表达式数组
定义Lambda表达式数组的结构为:

数组名=[(lambda 参数:函数返回值表达式1),((lambda 参数:函数返回值表达式2)···]

调用Lamda表达式数组的方式是:

数组名[索引](参数列表)

举例如下

myarr =[(lambda x,y: x+y),(lambda x,y:x*2+y*2),(lambda x,y:x*3+y*3)]
print(myarr[0](1,1),myarr[1](2,3),myarr[2](1,4))

在上述代码中定义了一个lambda表达式数组,然后给每一个表达式赋值,得出的结果分别为:2 10 15
lambda表达式也可以直接作为函数的返回值,可写成 return lambda表达式 即可

2. map函数
map函数将指定序列中的元素作为参数依次被制定函数调用,并输出一个新的序列作为返回值,map函数的语法结构为:

结果序列 = map(函数名,[参数1的序列],[参数2的序列]···)

具体例子可看如下代码

#定义函数getsum()
def getsum(x,y):
    return x+y
# 使用map函数将getsum作为参数,并将两个序列的内的元素分别作为x和y的参数传递值
arrr = map(getsum,[1,2,3],[2,5,6])
for i in arrr:
    print(i)

经过计算,输出的结果分别是

3
7
9

可以将map函数与lambda表达式一起使用,代码如下:

arr2 = map(lambda x: x ** 2, [2,4,6,8])
for i in arr2:
    print(i)

输出结果为:

4
16
36
64

3.filter函数
filter函数可以对指定的序列进行过滤,该函数的语法结构如下:

filter(函数,序列)

在该语法结构中,filter内的函数返回值是布尔值False或者是True,序列值可以是列表、元组或者是字符串,返回的结果为函数判断为True对应的序列元素,具体看如下代码:

#定义一个求偶数的函数is_even
def is_even(x):
    return x%2==0
#使用filter函数调用is_even函数
arr3 = filter(is_even,[1,2,3,4,5,6,7,8])
for i in arr3:
    print(i)

返回值为:

2
4
6
8

4.reduce函数
这个函数非常有意思,有点递归的感觉,引用的函数必须有两个参数,在引用序列的时候,序列中第一个和第二个元素作为参数输出结果作为新的第一个参数,第三个元素变成第二参数,以此结合。该函数从python3.0开始就不能直接在python内置函数内了,需要调用functools模块才可以。
函数的具体语法结构如下:

计算结果 = reduce(函数,序列)

具体示例代码如下:

#引入functools模块
import functools
#定义一个简单的数相乘的函数求积
def com(x,y):
    return  x*y
result = functools.reduce(com,[1,2,3,4,5,6,7])
print(result)

输出结果为:5040
该函数的运行过程就是123*···*7=5040
可以理解为com(com(com(com(com(com(1,2),3),4),5),6),7)的结果
和如下的代码有类似:

def cum(x):
    if x==1:
        return 1
    else:
        return cum(x-1)*x
print(cum(7))

该代码的输出结果也是:5040
5.zip函数
zip函数就像它的名字一样是个压缩的用途,一般是将多个元组打包成一个列表进行运算,所以zip函数的参数都是元组。
压缩的示例代码如下:

a = [1,2,3]
b = [3,4,5]
c = [7,6,0]
zippped = zip(a,b,c)
for i in zippped:
    print(i)

输出结果为:

(1, 3, 7)
(2, 4, 6)
(3, 5, 0)

zip函数也可以把压缩的列表进行解压,在打包结果前加上*即可,示例代码如下:

a = [1,2,3]
b = [3,4,5]
c = [7,6,0]
#将数据压缩,结果为zipped
zippped = zip(a,b,c)
#将zipped解压为uzipped
uzipped = zip(*zippped)
for j in uzipped:
    print(j)

输出结果为:

(1, 2, 3)
(3, 4, 5)
(7, 6, 0)
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
React是一个用于构建用户界面的JavaScript库。它采用了组件化的开发方式,使得开发者可以将界面拆分成独立的、可复用的组件。在React函数式编程是一种常见的编程范式,它强调使用纯函数来构建应用。 函数式编程是一种编程范式,它将计算视为数学函数的求值过程。在函数式编程函数被视为一等公民,可以作为参数传递给其他函数,也可以作为返回值返回。函数式编程强调不可变性和无副作用,即函数的执行不会改变外部状态。 在React函数式编程被广泛应用于组件的开发。使用函数式编程的方式,我们可以将组件定义为纯函数,接收一些输入参数(称为props),并返回一个描述组件界面的React元素。这种方式使得组件的开发更加简洁、可测试和可维护。 函数式编程在React的一些特点包括: 1. 纯函数:组件函数应该是纯函数,即相同的输入应该始终产生相同的输出,而且不应该有副作用。 2. 无状态组件:函数式组件通常是无状态的,即它们不会保存任何状态信息,只依赖于传入的props进行渲染。 3. 高阶组件:函数式编程可以使用高阶组件(Higher-Order Components)来增强组件的功能,例如添加共享的逻辑或状态管理。 总结一下,React函数式编程是一种将组件定义为纯函数的开发方式,它强调不可变性和无副作用,使得组件的开发更加简洁、可测试和可维护。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值