python入门使用(二):函数

函数

一、自定义函数:def

def add2(x):
    return x+2
print(add2(1))

在这里插入图片描述
返回列表和返回多个值的自定义函数:

def add2(x=0,y=0): #定义函数,同时定义参数的默认值
    return [x+2,y+2] #返回值是一个列表
def add3(x,y):
    return x+3,y+3 #双重返回
a,b = add3(1,2) #调用函数并给参数赋值
print(a)
print(b)

在这里插入图片描述

二、使用lambda对简单的功能定义行内函数

f = lambda x:x+2 #定义函数f(x)=x+2
g = lambda x,y:x+y #定义函数g(x,y)=x+y
print(f(2))
print(g(3,4))

在这里插入图片描述

三、函数式编程(泛函编程)

在python中,函数式编程主要由几个函数的使用构成:lambda、map、reduce、filter

使用函数式编程的最终目的是兼顾简洁和效率,因为lambda、map、reduce、filter的循环速度比python内置的for循环或while快得多

1、lambad函数:使用lambda对简单的功能定义行内函数

f = lambda x:x+2 #定义函数f(x)=x+2
g = lambda x,y:x+y #定义函数g(x,y)=x+y
print(f(2))
print(g(3,4))

在这里插入图片描述

2、map函数

假设有一个列表a=[1,2,3],要给列表中的每个元素都加2得到一个新列表:

a = [1,2,3]
b = [i+2 for i in a] #使用列表解析操作列表元素
print(b)

在这里插入图片描述
使用map函数;首先要定义一个函数,然后再用命名将函数逐一应用到(map)列表的每个元素,最后返回一个数组。

b = map(lambda x : x+2,a)
b = list(b)
print(b)

在这里插入图片描述

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

在这里插入图片描述

3、reduce函数

reduce有点像map,但是map用于逐一遍历,而reduce用于递归运算
在python3.x中,reduce函数已经被移除了全局命名空间,被置于fuctools库中,使用时需要通过from fuctools import reduce

#functools是系统自带的标准库
from fuctools import reduce() #导入reduce函数
reduce(lambda x,y:x*y,range(1,n+1)) #使用reduce计算n的阶乘

使用循环命令计算n的阶乘:

s = 1
for i in range(1,n+1):
    s = s*i

4、filter函数

一个过滤器,筛选列表中的元素

#使用filter筛选列表元素
b = filter(lambda x : x>5 and x<8,range(10))#筛选5到8的数
b = list(b)
print(b)

在这里插入图片描述
使用列表解析筛选:

b = [i for i in range(10) if i>5 and i<8]
print(b)

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_45154565/article/details/109262291