函数
一、自定义函数: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)