python 匹配字符串map lambda函数_python中的内置函数lambda map filter reduce

参考:https://www.cnblogs.com/caizhao/p/7905094.html

1.lambda表达式

lambda的功能类似于定义一个匿名函数,它简化了函数定义的书写方式,使代码更简洁

基本格式:lambda 参数,参数...:函数功能代码

举栗:

g=lambda x:x+1,在该表达式中x为入口参数,x+1为函数体,其用函数来表示为:

def f(x):

return x+1

g(1)=2,g(2)=3,g(1)也可表达为lambda x:x+1(1)

两个入参的栗子:

#方式1.声明一个简单的lambda表达式

mylamb = lambda x,y:x+y

#调用函数

result = mylamb(4,5)

扩展:

练习条件运算时,对于简单的if else语句,可以使用三元运算来表示,即:

if 1==1:

name='qpy'

else:

name='wjx'

用三元运算的方式表达:

name='qpy' if 1==1 else 'wjx'

对于简单的函数,也存在一种简单的表达方式,或者说lambda存在意义就是对简单函数的简洁表达,栗子可参考最初的举栗。

其他栗子:

aa=[{'id':4,'name':'a'},{'id':1,'name':'b'},{'id':7,'name':'c'}],想要将aa按照字典中的id来排序,可以使用

sorted(aa, key=lambda x:x['id'])

2.map

map的功能是遍历序列,对序列中每个元素进行操作,最终获取新的序列,整个过程如下:

ba709cf399314b0c784cee80e7425b44.png

在python 3.0中,使用map的返回值是一个对象,可以使用for...in获取对象中的值,python2中返回的是一个list

map函数的参数有两个,map(f,list),f是一个函数,list是待操作的序列。其中,函数f的入参个数与list的个数一致。

举栗1:函数f的入参以及list只有一个

foo = [2, 18, 9, 22, 17, 24, 8, 12, 27]

map(lambda x: x * 2 + 10, foo) 输出为[14, 46, 28, 54, 44, 58, 26, 34, 64]

该例子可用for in语句来表示,即print [x * 2 + 10 for x in foo]

举栗2:函数f的入参以及list有两个

li = [11, 22, 33]

sl = [1, 2, 3]

map(lambda a, b: a + b, li, sl) 输出为[12, 24, 36]

举栗3:自定义函数f

def f(x):

return x * 2 + 10

li = [11, 22, 33]

map(f,li) 输出为[32, 54, 76]

3.filter

filter,它是对序列中的元素进行筛选,最终获取符合条件的序列

be09d9049a6c2e110f03d210f54d5df0.png

在python 3.0中,使用filter的返回值是一个对象,可以使用for...in获取对象中的值,python2中返回的是一个list

举栗1:

foo = [2, 18, 9, 22, 17, 24, 8, 12, 27]

filter(lambda x: x % 3 == 0, foo) 输出为[18, 9, 24, 12, 27]

该例子可用for in语句来表示,即print [x for x in foo if x % 3 == 0]

举栗2:

li = [11, 22, 33]

new_list = filter(lambda arg: arg > 22, li)

该例子可用for in语句来表示,即print[i for i in li if i >22]

4.reduce

reduce对于序列内所有元素进行累计操作

eb3dda54709fb9103bf1d97d6be2c228.png

在python 3.0后, reduce已经不在built-in function里了, 要用它就得from functools import reduce

reduce函数的参数有3个,reduce(f,list,init_val),f是一个函数,list是要循环的序列,init_val是初始值(可选)。其中,函数f的入参必须有两个,list只有一个,reduce()对list的每个元素反复调用函数f,并返回最终结果值。

举栗1:

li = [11, 22, 33]

result = reduce(lambda arg1, arg2: arg1 + arg2, li) 输出结果为:66

result = reduce(lambda arg1, arg2: arg1 + arg2, li,100) 输出结果为:166

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值