Python-lambda

lambda 函数是一个简短的匿名函数,这里介绍它的经典用法。

语法

lambda 语法: lambda 参数列表(支持多个参数):计算表达式

lambda x,y,z:x+y+z
经典用法
  • filter() 方法借助于一个函数来过滤给定的序列,该函数测试序列中的每个元素是否为真。
    • 基础语法:filter(fun, iterable)
    • 参数:fun 测试 iterable 序列中的每个元素执行结果是否为 True,iterable 为被过滤的可迭代序列
    • 返回值:filter object
def is_upper(c):
    # 字母为大写时为 True
    return ord(c)<ord('a') 				
# 因为 filter 返回的是一个 filter object,所以输出的时候需要用 list 进行转换
print(list(filter(is_upper, 'AbCdEfG')))
## 输出结果: ['A', 'C', 'E', 'G']
  • filter with lambda: print(list(filter(lambda x:ord(x)<ord('a'), 'AbCdEfG')))

  • map() 函数的主要作用是可以把一个方法依次执行在一个可迭代的序列上,比如 List 等。

    • 基础语法:map(fun, iterable)
    • 参数:fun 依次处理 iterable 中的所有元素,iterable 为被过滤的可迭代序列
    • 返回值:map object
def roll(c):
	# 字符加 1, a 变 b
    return chr(ord(c)+1)
# 因为 filter 返回的是一个 map object,所以输出的时候需要用 list 进行转换
print(list(map(roll, 'abcdef')))
## 输出结果: ['b', 'c', 'd', 'e', 'f', 'g']
  • map with lambda: print(list(map(lambda x:chr(ord(x)+1), 'abcdef')))

  • reduce() 函数用于在列表(可迭代序列)上执行某些计算并返回结果,它将滚动计算列表中的所有元素,并得出统计结果。

    • 基础语法:reduce(fun, iterable)
    • 参数:fun 有两个参数,一个对应于 iterable 每一个元素的方法,另一个为上一次执行的结果,iterable 为被过滤的可迭代序列
    • 返回值:最终的 fun 的返回结果
    • Python3 中 reduce 不在作为保留字,该函数转移到了 包中
from functools import reduce
def sum(x,y):
	return x+y
print(reduce(sum, [1, 2, 3, 4]))
  • reduce with lambda: print(reduce((lambda x,y:x+y), [1, 2, 3, 4]))
错误的例子

不要在赋值语句中使用lambda,相比较于显式的def语句,lambda的唯一优势是能镶嵌在一个很长的表达式里,而不是用来代替 def。

# 推荐的写法:
def f(x): return 2*x

# 不推荐的写法:
f = lambda x: 2*x
参考文档

https://segmentfault.com/a/1190000018114755

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值