python(函数应用)第十五节
(一)lambda表达式(匿名函数)
return 后面的部分使用 lambda 关键字定义的就是 lambda 表达式,Python 要求 lambda 表达式只能是单行表达式。
代码:
def get_math_func(type): if type == '1': return lambda a: a+1; elif type == '2': return lambda a:a+2; else : return lambda a:a+3; #调用get_math_func(),程序返回一个嵌套函数 math_func = get_math_func("1") print(math_func(1)) math_func = get_math_func("2") print(math_func(2)) math_func = get_math_func("other") print(math_func(3))
结果:
2 4 6
(二)eval()和exec()用法
eval() 和 exec() 函数的功能是相似的,都可以执行一个字符串形式的 Python 代码(代码以字符串的形式提供),相当于一个 Python 的解释器。二者不同之处在于,eval() 执行完要返回结果,而 exec() 执行完不返回结果。
代码:
a = "1" exec("a ='我是小妖怪'") print(a) a = exec("'杀人不眨眼'") print(a) a = eval("'杀人不眨眼'") print(a)
结果:
我是小妖怪 None 杀人不眨眼
(三)函数式编程
(1)map()函数
map() 函数的功能是对可迭代对象中的每个元素,都调用指定的函数,并返回一个 map 对象。
代码:
list1 = ['我', '小', '吃', '不'] list2 = ['是', '妖', '人', '放'] list3 = [' ' , '怪', ' ', '盐'] #map的第一个参数是匿名函数,后面的参数是可迭代对象。 list = map(lambda x,y,z: x + y+z, list1,list2,list3) print(list(list))
结果:
['我是 ', '小妖怪', '吃人 ', '不放盐']
(2)filter()函数
filter() 函数的功能是对 iterable 中的每个元素,都使用 function 函数判断,并返回 True 或者 False,最后将返回 True 的元素组成一个新的可遍历的集合。
代码:
listDemo1 = [1, 2, 3, 4, 5] listDemo2 = [6, 7, 8, 9, 1] my_list1 = filter(lambda x: x % 2 == 0, listDemo1) my_list2 = filter(lambda x: x /3 == 3, listDemo2) print(list(my_list1)) print(list(my_list2))
结果:
[2, 4] [9]
(3)reduce()函数
reduce() 函数通常用来对一个集合做一些累积操作。
代码:
import functools list1 = ['你好','疯子'] a = functools.reduce(lambda x,y:x+y,list1) list2 = [1, 2, 3, 4, 5] b = functools.reduce(lambda x,y:x*y,list2) print(a) print(b)
结果:
你好疯子 120

浙公网安备 33010602011771号