Python基础9—常用函数
1、Lambda
①Lambda函数体只能有唯一的一条返回值表达式语句,语法为(参数个数可变):
返回函数名=lambda x,y,z:x+y+z
②可做为数组(也可以是字典或者列表)元素,哦那个人实现转表功能,也就是函数列表
定义语法:数组名=[(lambda表达式1),(lambda表达式2)......]
调用方法:数组名[索引](lambda表达式的参数列表)
1 he=lambda x,y,z:x+y+z 2 print(he(1,2,6)) 3 arr1=[(lambda x:x**2),(lambda x:x**3),(lambda x:x**4)] 4 print(arr1[0](2),arr1[2](2))
③作为函数的返回值
1 def jisuan(x): 2 if x==1: 3 return lambda x,y:x+y 4 if x==2: 5 return lambda x,y:x-y 6 if x==3: 7 return lambda x,y:x*y 8 if x==4: 9 return lambda x,y:x/y 10 11 action=jisuan(1) 12 print(action(10,2)) 13 action=jisuan(2) 14 print(action(10,2)) 15 action=jisuan(3) 16 print(action(10,2)) 17 action=jisuan(4) 18 print(action(10,2))
2、map()
map函数用于将指定序列中的所有元素作为参数调用指定函数,并将结果构成一个新的序列返回语法如下:
结果序列=map(映射函数,序列1[,序列2,......])
1 arr1=map(lambda x:x**2,[2,4,6,8,10]) 2 for e in enumerate(arr1): 3 print(e) 4 5 arr2=map(lambda x,y:x+y,[1,3,5,7,9],[2,4,6,8,10]) 6 for e in enumerate(arr2): 7 print(e)
3、filter()
filter函数可以对指定序列执行过滤操作,具体定义如下:
filter=(函数function,序列sequence)
函数functionjj接受一个参数,返回bool,序列可以是列表、元祖、字符串
filter函数一序列参数sequence中的每个元素为参数调用function函数,调用结果为True的元素将作为filter函数的结果返回
1 def is_even(x): 2 return x%2==0 3 arr=filter(is_even,[1,2,3,4,5,6,7,8,9,10]) 4 5 for e in enumerate(arr): 6 print(e)
4、reduce()
将指定序列中的所有元素作为参数按一定的规则调用指定函数,语法如下:
计算结果=reduce(映射函数,序列)
映射函数的参数必须有两个,reduce先调用序列第一和第二个元素,然后再调用第一和第二个元素的结果和第三个元素,以此类推
1 from functools import reduce 2 def myadd(x,y): 3 return x+y 4 sum=reduce(myadd,(2,4,6,8,10)) 5 print(sum)
5、zip()
以一些列列表作为参数,将列表中对应的元素打包成一个个元组,然后返回有这些元祖组成的列表(如果传入的参数长短不一,则返回列表的长度与最短的参数相同)
1 a=[1,2,3] 2 b=[4,5,6] 3 zipped=zip(a,b) 4 for element in zipped: 5 print(element) 6 print('--------------')#虚线前后得到的结果是一样的 7 b=[4,5,6,7,8,9] 8 zipped=zip(a,b) 9 for element in zipped: 10 print(element)
1 a=[1,2,3] 2 b=[4,5,6] 3 zipped=zip(a,b) 4 unzipped=zip(*zipped) 5 for element in unzipped: 6 print(element)