Python三元运算与lambda表达式

为什么把三元运算和lambda表达式放在一块说呢。

这二者都是对代码的简洁表示,只用一行代码就可以胜任一些小型的工作。刚接触这两种用法时,我脑海中的第一感觉就是这二者之间是存在联动的。实际上确实如此,将三元运算和lambda表达式写在同一行中,可以高效的简化代码,当然更为重要的是能同时加深你对这二者的理解。

三元运算

先来说说三元运算。

三元运算的基本格式很简单

结果A if 条件 else 结果B

当条件为真时,执行结果A,条件为假时,执行结果B

三元运算被广泛的用于赋值中。

# 示例一
n = 1 if 2 % 2 == 1 ^ 1 else 2
print(n)  # 1
# 示例二:让用户输入值,如果值是整数,转换成int,否则赋值为None
data = input(">>>")
v = int(data) if data.isdecimal() else None

当然,还有一些其他用法,领会精神即可。

print(1 == 1 if 1 else 1 != 1)  # True

print(1) if 0 else print(2)  # 2

最后要注意的是,不要刚拿到一个判断赋值就想着怎么简化,一定先用普通形式实现,再去思考如何简化,熟能生巧。

lambda表达式(匿名函数)

lambda表达式用来表示简单的函数(遵从函数的性质)。

它的基本格式也很简单

lambda 参数1,参数2,参数3...:执行的操作

另外,关于返回值问题,下面会举例说明

func1 = lambda a1: a1 + 100
n = func1(100)
print(n)  # 200

放个示例,再感受一下 

DATA = 1000

func1 = lambda a1, a2: a1 + 100
func2 = lambda a1, a2: a1 + DATA
func3 = lambda *args, **kwargs: len(args) + len(kwargs)
print(func1(1, 2), func2(1, 2), func3(1, 2, 3, k1=1, k2=2, k3=3))  
# 101 1001 6

有人可能会疑惑,这明明有变量指向它啊,但为什么叫他匿名函数呢?再放个示例

func = [lambda x:type(x) == int,"zrx",137,28]  # func[0]就是匿名函数

关于返回值问题

# 示例一
LIS = []
func = lambda a1: LIS.append(a1)

v1 = func("zrx")
print(v1)  # None
print(LIS)  # ['zrx']
###############################
USER = "zrx"
func = lambda a1: USER.replace("x", a1)

v1 = func("y")
print(v1)  # zry

"""
总结:是否有返回值要看具体的数据类型
"""

拓展:列表排序

USER_LIST = ["z", "zrxc", "zrx", "zrxcmk", "zrxcm", "zr"]
USER_LIST.sort(key=lambda x: len(x), reverse=True)
print(USER_LIST)  # ['zrxcmk', 'zrxcm', 'zrxc', 'zrx', 'zr', 'z']

"""
lambda能胜任一些小型的工作
"""

lambda表达式+三元运算(高级体验)

这里我只放一个示例,抛砖引玉,大家开动脑筋即可,二者结合起来还是很好玩的

func = lambda a1,a2: a1 if a1>a2 else a2

v1 = func(1,2)
print(v1)  # 2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值