匿名函数与map方法
有一些函数的定义具有清晰简单的映射关系,例如上面的my_func
函数,这时候可以用匿名函数的方法简洁地表示:
my_func = lambda x: 2*x my_func(3)
6
multi_para_func = lambda a, b: a + b multi_para_func(1, 2)
3
但上面的用法其实违背了“匿名”的含义,事实上它往往在无需多处调用的场合进行使用,例如上面列表推导式中的例子,用户不关心函数的名字,只关心这种映射的关系:
[(lambda x: 2*x)(i) for i in range(5)]
[0, 2, 4, 6, 8]
对于上述的这种列表推导式的匿名函数映射,Python
中提供了map
函数来完成,它返回的是一个map
对象,需要通过list
转为列表:
list(map(lambda x: 2*x, range(5)))
[0, 2, 4, 6, 8]
对于多个输入值的函数映射,可以通过追加迭代对象实现:
list(map(lambda x, y: str(x)+'_'+y, range(5), list('abcde')))
['0_a', '1_b', '2_c', '3_d', '4_e']