[每日一题]5、Python中的lambda表达式

点击上方Python3X”,选择“置顶或者星标

第一时间收到精彩推送!


Python Every Day, 第 5 天



lambda 函数,又称匿名函数(不需要指定函数名)。当我们需要定义一个函数时,又懒得写命名时时。就可以通过lambda实现。另外使得代码更加简洁。


匿名函数语法:

lambda(关键词):x,y,.. (代表函数的入参):m(m代表返回值,即return m)


先看一个简单的例子:


比如我们定义一个方法add()


 
def add(x, y):    return x + y
    return x + y


改写成lambda的方式如下:


 
lambda_add = lambda x, y: x + yprint(lambda_add(1, 2)) # 3 print(add(1, 2)) # 3
print(lambda_add(12)) # 3 
print(add(12)) # 3


其他例子:


 

 

 

 

 
# x为入口参数,x平方为函数体m = lambda x : x ** 2print(m(1))  # 1print(m(2))  # 4print(m(3))  # 9# 无论入口参数为什么都会返回1m = lambda x: 1print(m('abc')) # 1print(m(12)) # 1	
	
# 输入任意多个数,求和m = lambda *args : sum(args)print(m(1, 2, 3)) # 6	
	
m = lambda x : x if x < 10 else '-'print(m(1)) # 1print(m(5)) # 5print(m(11)) # -if x < 10 else '-'print(m(1)) # 1print(m(5)) # 5print(m(11)) # -10 else '-'print(m(1)) # 1print(m(5)) # 5print(m(11)) # -else '-'
print(m(1)) # 1
print(m(5)) # 5
print(m(11)) # -



全局函数


在python中有几个已经定义好的全局函数供我们直接使用


1、sort函数。

对列表中的元素进行排序,默认升序排列。

sort(key=None, reverse=False)


 

 

 
# print([[6, 1], [3, 2], [9, 4], [(1, 5)]].sort(lambda x: x[0]))# 按照二维列表的第一个元素进行排序# [(1, 5), (3, 2), (6, 1), (9, 4)]print(sorted([(6, 1), (3, 2), (9, 4), (1, 5)], key=lambda x: x[0]))dict1 = {'c': 'v1', 'a': 'v2', 'b': 'v3'}# 按照字典的键排序,如果按照值排序则lambda x: x[1] ,返回元组组成的列表# [('a', 'v2'), ('b', 'v3'), ('c', 'v1')]print(sorted(dict1.items(), key=lambda x: x[0]))	
	
# 按照4-x的绝对值进行排序(离4距离的大小排序)# [4, 3, 5, 2, 6, 1, 7]print(sorted([1, 2, 3, 4, 5, 6, 7],key=lambda x: abs(4-x)))# [4, 3, 5, 2, 6, 1, 7]print(sorted([1, 2, 3, 4, 5, 6, 7],key=lambda x: abs(4-x)))# [4, 3, 5, 2, 6, 1, 7]
print(sorted([1234567],key=lambda x: abs(4-x)))



2、filter函数。


用于过滤列表中符合条件的元素。

filter(function, Iterable)


 
# 过滤列表中能被2整除的--- 偶数lst = filter(lambda x : x % 2 == 0, [1, 2, 3, 4, 5])# [2, 4]print(list(lst))# 过滤能被3整除的数# [3]lst = filter(lambda x : x % 3 == 0, [1, 2, 3])print(list(lst))# 求 1- 100内的整数平方根import mathlst = filter(lambda x : math.sqrt(x) % 1 == 0, range(1, 101))# [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]print(list(lst))
lst = filter(lambda x : x % 2 == 0, [12345])
# [2, 4]
print(list(lst))

# 过滤能被3整除的数
# [3]
lst = filter(lambda x : x % 3 == 0, [123])
print(list(lst))


# 求 1- 100内的整数平方根
import math
lst = filter(lambda x : math.sqrt(x) % 1 == 0, range(1101))
# [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
print(list(lst))



3、map函数。


根据提供的函数对执行的序列做映射。

map(function, Iter)



 
# 对列表元素求平方m = map(lambda x : x ** 2, [1, 2, 3, 4])# [1, 4, 9, 16]print(list(m))# 两个列表,相同位置的元素相加m = map(lambda x, y: x + y, [1, 2, 3, 5], [9, 8, 7, 5])# [10, 10, 10, 10]print(list(m))# 将列表中的偶数值修改为0,奇数保持不变m = map(lambda x : 0 if x % 2 == 0 else x, [9, 4, 1, 6, 8])# [9, 0, 1, 0, 0]print(list(m)) 
m = map(lambda x : x ** 2, [1234])
# [1, 4, 9, 16]
print(list(m))

# 两个列表,相同位置的元素相加
m = map(lambda x, y: x + y, [1235], [9875])
# [10, 10, 10, 10]
print(list(m))

# 将列表中的偶数值修改为0,奇数保持不变
m = map(lambda x : 0 if x % 2 == 0 else x, [94168])
# [9, 0, 1, 0, 0]
print(list(m)) 



往期Python Every Day


[每日一题]4、Python中的迭代器

[每日一题]3、Python实现删除list中重复元素的几种方式

[每日一题]2、Python中的类的定义和装饰器@classmethod与@staticmethod

[每日一题] 1、Python中的可变对象与不可变对象


640?



感谢您的阅读

长按二维码关注

公众号「Python3X

640?wx_fmt=jpeg

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值