python之匿名函数和内置函数

本文深入探讨Python中的匿名函数(lambda)及其应用场景,包括作为参数传递、结合内置函数使用等。同时,详细讲解Python内置函数如max、min、map、sorted、reduce和filter的使用方法及实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

python之匿名函数和内置函数

1、匿名函数

1.1 什么是匿名函数?

对于某些函数,由于其函数体的片段较为简单,为了简化其定义的方式,在这了采用匿名函数的形式直接定义。例如我们想要定义的是一个a+b的简单的函数过程。如果采用常规的函数定义方式为:

def add_o(a,b):
	return a+b
1.2 匿名函数的定义方式
lambda 参数1,参数2,...参数n: 运算f

注意:如果运算f中是包含if-else结构的,结构为 x if 条件 else 其他值 。也就是说,首先省去了冒号,然后满足if条件的结果x被放在了if条件的前面。

1.3 匿名函数的使用
1.3.1 基本方式

对于上面简单的a+b的例子,我们直接使用:

add_l = lambda a,b:a+b
result = add_l(1,2) #计算1+2 的结果,将结果返回给result
print(result)
####输出
3

在这里,add_o和add_l实际上指的都是a+b这个函数,对于add_o,我们采用直接定义的方式。对于add_l,我们实际上是先定义了一个函数,然后将这个a+b的函数的赋给add_l。调用add_l就相当于调用这个lambda函数。最后用result来接收这个函数的返回值。

1.3.2 作为参数

下面在举一个例子:lambda函数可以作为参数进行传入

def func(x,y,fun):
	print(x)
	print(y)
	result = fun(x,y)
	print(result)
func(1,2,lambda a,b:a+b)
##输出
1
2
3
1.3.3 和内置函数相结合
lis = [{'a':10,'b':20},{'a':9,'b':15},{'a':18,'b':7}]
res = max(lis,key= lambda x:x['a']) #用lambda函数对list中每一个元素中的a对应的数字进行比较。
print(res)
##输出
{'a': 18, 'b': 7}


lis = [{'a':10,'b':20},{'a':9,'b':15},{'a':18,'b':7}]
res = min(lis,key= lambda x:x['a'])
print(res)
##输出:
{'a': 9, 'b': 15}

lis = [1,2,3,4,5,6]
res = list(map(lambda x:x+1,lis))
print(res)
## 输出:
[2, 3, 4, 5, 6, 7] #对原来列表的每一个参数+1

2 、内置函数

内置函数指的就是Python内部基本无需导入其他模块,自带的一些方法。简单的熟悉一下这些代码,可以帮助我们在实际的编程中省去很多时间。

2.1 常见内置函数和基本使用
  1. max :最大值

  2. min: 最小值

  3. map(func,*iterables)
    第一个参数表示一个函数,第二个参数是一个迭代器。func对迭代器中的每一个参数进行func中定义的操作。

    lis = [1,2,3,4,5,6]
    res = list(map(lambda x: x if x % 2 == 0 else x+1,lis))
    print(res)
    ## 输出:
    [2, 2, 4, 4, 6, 6] #奇数+1,偶数不加
    
  4. sorted(iterator,key,reverse):第一个参数是迭代器,第二个参数是用于排序的关键字,第三个参数是是否翻转(默认是从小到大,翻转之后从大到小)

    	lis = [{'a':10,'b':20},{'a':9,'b':15},{'a':18,'b':7}]
    	res = sorted(lis,key=lambda x:x['a'])
    	print(res)
    	#输出:
    	[{'a': 9, 'b': 15}, {'a': 10, 'b': 20}, {'a': 18, 'b': 7}]
    
    lis = [{'a':10,'b':20},{'a':9,'b':15},{'a':18,'b':7}]
    	res = sorted(lis,key=lambda x:x['a'],reverse=True)
    	print(res)
    	# 输出
    	[{'a': 18, 'b': 7}, {'a': 10, 'b': 20}, {'a': 9, 'b': 15}]
    
  5. reduce(func,*iterator,[,initail=]):对迭代器中的元素进行加减乘除运算的函数 。所属模块 from functools import reduce
    func是对迭代器中元素进行操作的函数,initial是在计算过程中的一个初始元素

    from functools import reduce
    tutle = (1,2,3,4,5)
    res = reduce(lambda x,y:x+y,tutle) #对元祖内的数据进行累计求和
    #输出
    15
    
    from functools import reduce
    tutle = (1,)
    res = reduce(lambda x,y:x+y,tutle,10) #以10作为整个计算的初始值
    print(res)
    #输出
    11
    

    注意:reduce不接受key=value这种传参的方式

  6. filter(func,*iterator)函数:主要用于过滤,func是用于过滤的函数,iterator迭代器

    lis = [6,5,3,4,8,2,1]
    res = list(filter(lambda x:x>3,lis))
    print(res)
    #输出:
    [6, 5, 4, 8]
    
    lis = [{'a':10,'b':20},{'a':9,'b':15},{'a':18,'b':7}]
    res = list(filter(lambda x:x['a']>10,lis))
    print(res)
    #输出:
    [{'a': 18, 'b': 7}]
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值