Python-lambda表达式
Python lambda表达式
一、语法和介绍
- 语法:lambda argument_list: expression
- lambda函数:又称“匿名函数”
- argument_list:参数列表,作为函数的输入
- expression:表达式,只能用到参数列表中出现的参数,根据表达式计算得到的值作为函数的输出
- 介绍:
- lambda的函数体只有一个表达式,而非代码块,代码简洁
- lambda函数无需命名即可快速调用
- 简单单行函数或一次性函数可以用lambda表达式来书写
二、用法
匿名调用和命名调用
1
2
3
4
5
6
7
8
9
10
11# def函数写法
def func(x, y):
return x + y
# lambada表达式既可以匿名直接调用,也可以赋值给某个变量再调用
# 匿名调用
print((lambda x, y: x + y)(2, 3))
# 命名调用
a = lambda x, y: x + y
print(a(2, 3))作为函数法返回值
1
2def sum(x, y):
return lambda x, y: x + y与其他函数配合使用
filter(function, iterable)函数
1
2
3
4
5
6
7# 过滤掉某些不符合条件的元素
# 其中iterable可以为列表、字符串或元组,逐一对元素通过function的条件进行筛选,然后保留下满足条件的数据。python3返回的是一个迭代器,可以用list进行转换得到输出结果
# 此时lambda函数用于指定过滤列表元素的条件
# 保留奇数
nums = list(filter(lambda x: x % 2 == 1, nums))
print(nums)map(function, iterable)函数
1
2
3
4
5
6
7# 会根据提供的function函数对指定序列做映射
# 逐一对元素通过function操作,返回的是一个迭代器,可以用list进行转换
# 此时lambda函数用于指定映射规则
# 输出平方
nums = list(map(lambda x: x ** 2, nums))
print(nums)reduce(function, iterable)函数
1
2
3
4
5
6# 对参数序列中的元素进行累计
# 函数先将iterable中的第1和第2个元素进行function操作,将得到的结果与第3个数进行function操作,如此累积
# 求和
nums = reduce(lambda x, y: x + y, nums)
print(nums)sorted(iterable, key = function) 和 iterable.sort(key = function)函数
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17# 此时lambda函数用于指定对列表中所有元素进行排序的准则
# 按字符串长度排序
s = ["abdc", "djind", "in", "a"]
s.sort(key=lambda x: len(x))
print(s)
# 按字典的键排序
d = {4: "hhh", 3: "jidn", 5: "djien"}
d = dict(sorted(d.items(), key=lambda x: x[0]))
print(d)
# 按元组的某一位排序
d = [(1,2),(1,3),(4,0)]
d = list(sorted(d, key = lambda x: x[1]))
print(d)
三、举例
将字符串按照字母顺序排序
1 | # python中的字符串类型是不允许直接修改元素的。必须先把要排序的字符串放在容器里,如list。然后在通过sort函数排序,最后还原成字符串 |
1 | s="string" |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Welcome to Durango's blog!!
评论