Python中优化带条件的max函数lambda键(移除else分支)
移除lambda中的else分支的解决方案
直接利用Python布尔值与整数的转换特性(True等价于1,False等价于0),可以把原lambda函数改写为不需要else分支的形式:
print(max([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], key=lambda x: x * (x < 9)))
原理说明
- 当
x < 9为真时,x < 9会被转为整数1,乘以x后结果就是x本身,和原代码中x if x<9的逻辑一致; - 当
x >= 9时,x < 9转为整数0,乘以x后结果为0,和原代码中else 0的效果完全相同。
这种写法既满足你不需要else分支的要求,又能实现和原代码一样的功能,而且不会触发语法错误。
内容的提问来源于stack exchange,提问作者Atlas
相关产品推荐
相关产品推荐

