python lambda表达式应用
2024-10-19 03:37:30
在python中有两种函数,一种是通过def得到的函数,一种是匿名函数,也就是lambda表达式。语法格式如下:
lambda argument_list:expersion
语法中的argument_list是参数列表,它的结构与Python中函数(function)的参数列表是一样的,比如:
a,b
a=1,b=2
*args
**kwargs
a,b=1,*args
空
....
语法中的expression是一个关于参数的表达式,表达式中出现的参数需要在argument_list中有定义,并且表达式只能是单行的。比如:
1
None
a+b
sum(a)
1 if a >10 else 0
......
应用1,求变量与整数的和,一般来说可以直接打印变量与整数,或者通过定义函数来实现,还可以通过lambda表达式来实现,代码如下:
1 #直接打印
2 x = 2
3 print(x + 2)
4
5 #定义函数
6 def asum(x):
7 return x+2 #返回变量与2的和
8
9 a = asum(2) #调用函数,并传实参2,计算和
10 print(a) #4
11
12 #用lambda表达式写
13 b = lambda x:x+2 #撰写表达式并赋值给变量b
14 print(b(3)) #打印是否符合预期
15
16 #也可以这样写lambda表达式
17 c = (lambda x:x+2)(3) #在表达式后面直接跟x的值,并赋给变量c
18 print(c) #打印
2,将lambda表达式传递给其他函数结合使用:
传递给filter
d = filter(lambda x:x%3==0,list(range(1,10))) #定义变量 print(list(d))
传递给map
squares = map(lambda x:x**2,range(1,10)) print(list(squares))
与sorted函数结合使用
1 e = [('b',3),('a',2),('d',4),('c',1)]
2 f = sorted(e,key=lambda x:x[0]) #按照列表e的第一个元素进行排序,也就是按照abcd
3 g = sorted(e,key=lambda x:x[1]) #按照列表e的第二个元素进行排序,也就是按照1234
4 print(e) #原始列表
5 print(f) #[('a', 2), ('b', 3), ('c', 1), ('d', 4)]
6 print(g) ##[('c', 1), ('a', 2), ('b', 3), ('d', 4)]
与reduce函数结合使用
1 from functools import reduce
2 h = reduce(lambda a,b : '{},{}'.format(a,b),[1,2,3,4,5,6,7,8,9])
3 print(h)
4
5 j = reduce(lambda x,y : x+y, [1,2,3,4,5]) #等同于(((((1+2))+3)+4)+5)
6 print(j)
3,在函数内嵌套使用,lambda表达式做为返回值:
1 def increment(n):
2 return lambda x:x+n #返回lambda表达式
3
4 k = increment(5) #调用函数并赋值给变量k
5 print(k(2)) #理解为将2赋值给匿名函数里的x,结果为7
4,字符串联合:
l = (lambda x = 'bb', y = 'cc', z = 'aa' : x+y+z) print(l('foo'))
5,判断字符串是否以某个字母开头:
1 names = ['Anne','amy','Bob','David','Carrie','Barbara','Zach']
2 b_names = filter(lambda x:x.startswith('B'),names)
3 print(list(b_names))
6,求两个列表元素序列和:
a = [1,2,3,4,5] b = [5,6,7,8,9] print(list(map(lambda x,y : x+y, a,b)))
7,求字符串中每个单词的长度:
sentence = "Welcome to Python world"
words = sentence.split()
lengths = map(lambda x:len(x),words)
print(list(lengths))
代码并无意义,仅供理解学习使用。
最新文章
- java统计字符串单词的个数
- 从网上找的 visual studio 的各个版本下载地址,vs2010/vs2012/vs2013带注册码
- Azure IoT带来更高效的新能源生产和会看人脸色的无人超市
- easyui的datagrid打印(转)
- gitlab web hook
- 解决Android sdk更新不能下载或下载内容过慢
- ajax与jsonp的区别
- 纯css实现扁平化360卫士logo demo
- Java为什么使用连接池
- windows phone (18) Border元素
- 线段树 或者 并查集 Intel Code Challenge Elimination Round (Div.1 + Div.2, combined) C
- C-Sharp网络编程案例解析(Socket类的使用)
- bootstrap图标字体不出来问题的解决办法
- Maven pom.xml配置详解
- Anveshak: Placing Edge Servers In The Wild
- 技术文档生成工具:appledoc
- React child
- WPF的EventAggregator的发布和订阅
- js单图片上传
- python实现并查集
热门文章
- 通过PHPExcel将Excel表文件中数据导入数据库
- jmeter简单的压力测试
- 如何让文科生5分钟写上Python
- java线程与内存的关系
- 大厂是如何用DevCloud流水线实现自动化部署Web应用的?
- PyQt(Python+Qt)学习随笔:QTableWidget的currentItem、rowCount、columnCount等部件状态属性访问方法
- 第10.10节 Python使用__init__.py自动加载包下内容
- 第10章 Python的模块和包
- Making Games with Python &; Pygame 中文翻译
- 第二篇 Scrum 冲刺博客