lambda函数和匿名函数

lambda表达式可以用来声明匿名函数,实际生成了一个函数对象,该表达式的计算结果就是函数的返回值。

lambda表达式的基本语法如下:

	lambda  arg1,arg2,arg3...:<expression using arguments>

1、lambda表达式的使用

f1 = lambda a,b,c:a+b+c
print(f1)
print(f1(2,3,4))
>>><function <lambda> at 0x00000000021B55E8>
>>>9
f2 = [lambda a:a*2,lambda b:b*3,lambda c:c*4]
print(f2[0](2),f2[1](3),f2[2](4))
>>>4 9 16

lambda 通常用来编写跳转表,能够按需执行操作,比如:

f3 = [lambda a:a*2,lambda b:b*3,lambda c:c*4]
for l in f3:
    print(l(2))
>>>4
>>>6
>>>8

如果上述代码用def函数来编写则变为:

def f1(x):
    return x * 2

def f2(x):
    return x * 3

def f3(x):
    return x * 4

l = [f1, f2, f3]

for f in l:
    print(f(2))
print(l[0](3))
>>>4
>>>6
>>>8
>>>6

2、说到lambda,就必须提及三个函数map、filter、reduce

map 函数

第一个参数function以参数序列中的每一个元素调用function函数,返回包含每次function函数返回值的新列表

语法:

	map(function, iterable, ...)

map()会根据提供的函数对指定的序列做操作,比如有个列表,需要将列表的每个字段加10。

##方法一
new_list_show = []
for i in list_show:
    new_list_show.append(i + 10)
print(new_list_show)
>>>[11, 13, 15, 17]
##方法二
def adds(x):
    return x+10
print(list(map(adds,list_show)))
>>>[11, 13, 15, 17]
###方法三
print(list(map(lambda x:x+10,list_show)))
>>>[11, 13, 15, 17]

map在python3中是一个可迭代对象,引入需要使用列表的调用来迫使它生成所有的结果用于显示。

filter函数

filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。它接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判断,返回True或者False,最后返回True的元素的放到新的列表中。

语法:

filter(function, iterable)

例如过滤0-9中,能被2整除的数字组成的一个列表

print(list(filter((lambda x:x % 2 == 1),range(10))))
>>>[1, 3, 5, 7, 9]

reduce函数

reduce() 会对参数序列中元素进行累积。先对数据集合中的第1,2和元素进行function操作,执行的结果再与集合中第3个元素用function函数运算,以此类推,最后得到最终的结果。

语法:

reduce(function, iterable[, initializer])

Python3使用reduce函数要先:from functools import reduce

from functools import reduce
print((reduce((lambda x,y:x+y),[1,3,5,7,9])))	
>>>25

参考:https://www.jianshu.com/p/2e567c44cc9d

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值