Python学习笔记之lambda表达式用法详解
本文实例讲述了Python学习笔记之lambda表达式用法。分享给大家供大家参考,具体如下:
Lambda表达式
使用Lambda表达式创建匿名函数,即没有名称的函数。lambda表达式非常适合快速创建在代码中以后不会用到的函数。
麻烦的写法:
defmultiply(x,y): returnx*y
使用Lambda之后:
double=lambdax,y:x*y
Lambda函数的组成部分:
- 关键字lambda表示这是一个lambda表达式。
- lambda之后是该匿名函数的一个或多个参数(用英文逗号分隔),然后是一个英文冒号:。和函数相似,lambda表达式中的参数名称是随意的。
- 最后一部分是被评估并在该函数中返回的表达式,和你可能会在函数中看到的return语句很像。
- 备注:鉴于这种结构,lambda表达式不太适合复杂的函数,但是非常适合简短的函数。
Lambda表达式[相关练习]
map()是一个高阶内置函数,接受函数和可迭代对象作为输入,并返回一个将该函数应用到可迭代对象的每个元素的迭代器。下面的代码使用map()计算numbers中每个列表的均值,并创建列表averages,通过将mean函数替换为在map()的调用中定义的lambda表达式,重写这段代码,使代码更简练。
numbers=[ [34,63,88,71,29], [90,78,51,27,45], [63,37,85,46,22], [51,22,34,11,18] ] defmean(num_list): returnsum(num_list)/len(num_list) averages=list(map(mean,numbers)) print(averages)
使用lambda重写后:
numbers=[ [34,63,88,71,29], [90,78,51,27,45], [63,37,85,46,22], [51,22,34,11,18] ] averages=list(map(lambdax:sum(x)/len(x),numbers)) print(averages)#[57.0,58.2,50.6,27.2]
filter()是一个高阶内置函数,接受函数和可迭代对象作为输入,并返回一个由可迭代对象中的特定元素(该函数针对该元素会返回True)组成的迭代器。下面的代码使用filter()从cities中获取长度少于10个字符的名称以创建列表short_cities。通过将is_short函数替换为在filter()的调用中定义的lambda表达式,重写这段代码,使代码更简练。
cities=["NewYorkCity","LosAngeles","Chicago","MountainView","Denver","Boston"] defis_short(name): returnlen(name)<10 short_cities=list(filter(is_short,cities)) print(short_cities)
使用lambda重写后:
cities=["NewYorkCity","LosAngeles","Chicago","MountainView","Denver","Boston"] short_cities=list(filter(lambdan:len(n)<10,cities)) print(short_cities)#['Chicago','Denver','Boston']
关于Python相关内容感兴趣的读者可查看本站专题:《Python函数使用技巧总结》、《Python面向对象程序设计入门与进阶教程》、《Python数据结构与算法教程》、《Python字符串操作技巧汇总》、《Python编码操作技巧总结》及《Python入门与进阶经典教程》
希望本文所述对大家Python程序设计有所帮助。