在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))

代码并无意义,仅供理解学习使用。

最新文章

  1. java统计字符串单词的个数
  2. 从网上找的 visual studio 的各个版本下载地址,vs2010/vs2012/vs2013带注册码
  3. Azure IoT带来更高效的新能源生产和会看人脸色的无人超市
  4. easyui的datagrid打印(转)
  5. gitlab web hook
  6. 解决Android sdk更新不能下载或下载内容过慢
  7. ajax与jsonp的区别
  8. 纯css实现扁平化360卫士logo demo
  9. Java为什么使用连接池
  10. windows phone (18) Border元素
  11. 线段树 或者 并查集 Intel Code Challenge Elimination Round (Div.1 + Div.2, combined) C
  12. C-Sharp网络编程案例解析(Socket类的使用)
  13. bootstrap图标字体不出来问题的解决办法
  14. Maven pom.xml配置详解
  15. Anveshak: Placing Edge Servers In The Wild
  16. 技术文档生成工具:appledoc
  17. React child
  18. WPF的EventAggregator的发布和订阅
  19. js单图片上传
  20. python实现并查集

热门文章

  1. 通过PHPExcel将Excel表文件中数据导入数据库
  2. jmeter简单的压力测试
  3. 如何让文科生5分钟写上Python
  4. java线程与内存的关系
  5. 大厂是如何用DevCloud流水线实现自动化部署Web应用的?
  6. PyQt(Python+Qt)学习随笔:QTableWidget的currentItem、rowCount、columnCount等部件状态属性访问方法
  7. 第10.10节 Python使用__init__.py自动加载包下内容
  8. 第10章 Python的模块和包
  9. Making Games with Python & Pygame 中文翻译
  10. 第二篇 Scrum 冲刺博客