匿名函数与内置函数(python3入门)
1 #匿名函数:没有名字的函数,只有函数的内存地址,只能用一次就被回收 2 # lambda x,y:x>y #当表达式执行完毕后,自动return值 3 # 更多情况下,匿名函数都是和其他函数配合到一起使用 4 5 6 from functools import reduce 7 8 salaries = { 9 'egon':3000, 10 'alex':100000, 11 'wuxx':2000, 12 'yuanhao':40000 13 } 14 15 # print(max(salaries,key=lambda x:salaries[x])) #max函数比较的是key中的表达式,而在比较出最大值后,return了字典的key 16 # print(min(salaries,key=lambda y:salaries[y])) 17 18 # print(sorted(salaries,key=lambda x:salaries[x])) #类似max函数,比较的是字典的value,返回了一个从小到大的人名 19 # print(sorted(salaries,key=lambda x:salaries[x],reverse=True)) #类似max函数,比较的是字典的value,返回了一个从大到小的人名 20 21 22 # filter() 23 24 25 26 27 28 29 # map() #映射,按照某种映射规则产生新的值 30 # names = ['alex','wxx','egon'] 31 # res = map(lambda x:'%s_sb'%x,names) 32 # print(res,type(res)) #map返回一个迭代器对象 33 # print(list(res)) #可以通过list来调出迭代器对象中的值 34 # print(['%s_sb'%name for name in names]) #使用列表生成器打印新列表的内容 35 # print('%s_sb'%name for name in names) #使用列表生成器同样可以实现上述需求 36 37 # reduce() #合并字符串/数字相加 38 # res = reduce(lambda x,y:x+y,range(1,101)) #1~100数字两两相加 39 # print(res) 40 41 #filter 42 43 # names = ['alex_sb','wxx_sb','egon','old_sb'] 44 # res = filter(lambda x:x.endswith('sb'),names) 45 # print(res) 46 # print(list(res)) #遍历names列表,过滤出以sb结尾的元素,组成一个新列表 47 # 48 # print([name for name in names if name.endswith('sb')]) #列表生成式也可以搞定