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

  

 

 

 

 

 

 

 

 

 

posted @ 2019-11-11 21:51  北葵向暖南栀倾寒  阅读(403)  评论(0)    收藏  举报