1 匿名函数
1.1 什么是匿名函数:
匿名函数的关键字为 lambda,冒号前面是 形参 冒号后面是返回值 。
lambda函数能实现普通一样的功能,能传入参数,也能返回运算结果;不同的是lambda函数没有函数名,通常只有一行的表达式,函数的复杂程度也有限。
如果使用lambda(匿名)函数,map( )函数和reduce( )函数及filter()函数还能进一步简化如:print(reduce(lambda x,y:x+y,range(10)))
匿名函数示例:
def fun(*args,**kwargs):
return args,kwargs
print(fun([1,2,3,4,5]))
#将上面的fun函数改写为匿名函数
print(lambda *args,**kwargs:(args,kwargs))
1.2 匿名函数应用:
(1)匿名函数求1-5的和 简化reduce函数
from functools import reduce
print(reduce(lambda x,y:x+y,[1,2,3,4,5]))
(2)输出1-100之间的偶数,简化filter函数
print(list(filter(lambda x:x%2==0,range(1,101))))
(3)移动列表中的0
nums = [0, 7, 0, 1, 2, 1, 5,1, 7, 8, 0, 67, 1, 3, 4]
print(sorted(nums,key=lambda x:1 if x == 0 else 0))
(4)将列表[0,1,2,3,4]的每个元素都平方然后输出
print(list(map(lambda x:pow(x,2),range(5))))
2 快速生成校验码
import random
import string
##快速生成随机的字母和数字
code_str = string.ascii_letters + string.digits
##打印随机生成的字母和数字
print(code_str)
##打印随机取出的4个字母或数字
print(random.sample(code_str,4))
def gen_code(len=4):
##在随机生成的随机字母和数字忠任意取4个拼接成4位内推码
return ''.join(random.sample(code_str,len))
##调用函数生成四位内推码
print(gen_code())
##一次生成10个随机4位内推码
print([gen_code() for i in range(10)])
结果:
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
['U', 'a', '3', 'z']
I3Oy
['dLT3', 'plJt', 'gQy1', 'MRDu', 'UXSm', 'PMCN', 'nNdo', 'SvnU', 'qlxb', 'Ey9X']