python - 匿名函数和内置函数

匿名函数

lambda函数是匿名函数,lambda是关键字,匿名函数其实就是没有函数名的函数。
语法:lambda arg1,arg2,arg3...:expression 其中arg是参数,expression是表达式
特点:
1、匿名函数没有函数名,所以不用担心函数命名冲突
2、函数名的限制是只有一个表达式,不用写return,返回值就是匿名函数的结果
3、可以通过赋值给变量的方式来调用该函数
和普通函数的区别:对于那些可以用一条表达式来实现的方法,很适合用匿名函数来实现,增加代码的简洁度,但是对于不确定参数个数的情况,更适合用普通函数实现,各有优缺。

匿名函数和普通函数的区别示例

res = lambda x,y:x+y
print("匿名函数 - 两数之和",res(10,20))  # 两个数之和

def fun1(a,b):
    return a + b
print("普通函数 - 两数之和",fun1(10,20))
# 匿名函数与内置函数sum()结合使用 
res1 = lambda *args:sum(args)
print(res1(10,20,30))
# 引申知识:我们想要用sum函数实现多数字相加的话,传的参数需要是一个列表类型
lst = [1,2,3,4,5]
print("sum():",sum(lst)) # 15
# print(sum(1,2,3,4,5))  #报错 sum() takes at most 2 arguments (5 given)
# 但是我们在匿名函数中传的参数10,20,30,并不是列表却没有报错的原因是*args的类型就是列表
a,*b,c = 1,2,3,4,5,6,7
print(b) # [2,3,4,5,6]

内置函数 - map()函数

语法:map(function,iterable,..)
会根据提供的括号内函数对给出的序列做一一映射
function为指定的函数,iterable为所提供的序列,可以为多个序列

# 普通函数、匿名函数、map()函数的结合使用
list1 = [1,2,3,4,5,6,7]

def func2(x):
    return x*x
res2 = map(func2,list1)
print("多个数字的平方:",res2)
print("多个数字的平方:",list(res2))

func3 = lambda x:x*x
res3 = map(func3,list1)
print("多个数字的平方:",res3)
print("多个数字的平方:",list(res3))

''' 运行结果
多个数字的平方: <map object at 0x000001CAE5F57190>
多个数字的平方: [1, 4, 9, 16, 25, 36, 49]
多个数字的平方: <map object at 0x000001CAE5FB27C0>
多个数字的平方: [1, 4, 9, 16, 25, 36, 49]
'''

实现多个数字的平方

# 普通函数实现多个数字的平方
list3 = [1,2,3,4,5,6,7,8]
def func4(x):
    res = 1
    lst = []
    for i in x:
        res = i * i
        lst.append(res)
    print("普通函数实现多个数字的平方",lst)
func4(list3)
# 匿名函数实现多个数字的平方
func5 = lambda args:args*args
li = []
for i in list3:
    res5 = func5(i)
    li.append(res5)
print("匿名函数实现多个数字的平方",li)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值