lambda函数

lambda函数又称为匿名函数,即没有函数名的函数

lambda x,y:x+y
#x,y是函数的两个变量,位于冒号的左边,冒号右边的表达式是函数的返回值。
add =lambda x,y:x+y
add
<function <lambda> at 0x7f0f0dd855f0>

add(1,2)
3

等价于
def add(x,y):
    return x+y
add(1,2)

lambda的使用

1.函数式编程

#例如:一个整数列表,要求按照列表中元素的绝对值大小升序排列

list1 = [3,5,-4,-1,0,-2,-6]

print(sorted(list1,key=abs))

print(sorted(list1,key=lambda x:abs(x)))

2.python中最常见的filter筛选、map小刷子、reduce合并,都可以用lambda表达式来生成。

对于序列来讲,有三个函数式编程工具:filter()、map()、reduce()

map(function,sequence):把sequence中的值当参数逐个传给function,返回一个包含函数执行结果的list。

#求1~20的平方

print(list(map(lambda x:x**2,range(1,21))))

#[1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225, 256, 289, 324, 361, 400]

filter(function,sequence):对sequence中的item依次执行function(item),将执行结果为True的item组成一个List/String/Tuple(取决于sequence的类型)返回。

#求1~20之间的偶数

print(list(filter(lambda x:x%2 == 0,range(1,21))))

#[2, 4, 6, 8, 10, 12, 14, 16, 18, 20]

reduce(function,sequence):function接收的参数个数只能为2,先把sequence中第一个值和第二个值当参数传给function,再把function的返回值和第三个值当参数传给function,然后只返回一个结果。

#求1~100之和

from functools import reduce

print(reduce(lambda x,y:x+y,range(1,101)))

#5050

#求1~100之和,再加上10000

from functools import reduce

print(reduce(lambda x,y:x+y,range(101),10000))

#15050

3.闭包

一个定义在函数内部的函数,内部函数使用了外部函数的临时变量,并且外部函数的返回值是内部函数的引用。

​​​​​​​def outer(a):

    b=10

        def inner(): # 内部函数

            print(a+b)

        return inner # 外函数的返回值是内函数的引用

outer(5)

https://www.cnblogs.com/Uncle-Guang/p/8919206.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值