赞
踩
提起三目表达式,相信大家都不陌生。该表达式,简化了代码的书写,可以说一定程度上,让我们的代码,看起来十分精炼。不同的编程原因,绝对部分都会提及到三目语法。比如,在systemverilog 语言中,定义 if 判断条件为真 ? 条件为真的表达式:条件为假的表达式。
今天,我们着重总结python 的三目语法。
result = 为真时的结果 if 判断条件 else 为假时的结果
- # 示例:
- >>> x = 1
- >>> y = 2
- >>> result = x if x > y else y # 如果条件成立,将x的值赋给result
- >>> result
- 2
上面的三元表达式等价于
- >>> x = 1
- >>> y = 2
- >>> if x > y:
- ... result = x
- ... else:
- ... result = y
- ...
- >>> result
- 2
- >>>
- # 示例一: 求两个参数的最大值
- >>> def max(x, y):
- ... return x if x > y else y # 取两个值的比较大的
- ...
- >>> max(1, 3)
- 3
- >>>
- # 示例二: 斐波那契数列
- >>> def fib(n):
- ... return n if n<2 else fib(n-1)+fib(n-2)
- ...
- >>> [fib(n) for n in range(10)]
- [0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
- >>>
- >>> map(lambda x,y:x-y if x> y else y-x, [2,1,3],[4,3,1]) # 两个列表相减并保证不为负
- [2, 2, 2]
- >>>
- # 示例一: 将0-9的10个数,奇数用0表示,偶数用1表示
- >>> [0 if i % 2 == 0 else 1 for i in range(10)]
- [0, 1, 0, 1, 0, 1, 0, 1, 0, 1]
-
- # 示例二: 常规写法
- >>> x = 100
- >>> L = []
- >>> L.append(1 if x>0 else 0)
- >>> L
- [1]
- >>>
使用三元表达式的写法
一般的写法,可以看见,使用三元表达式的写法要简洁的多!
下面是三元表达式的一个变种,但是只能针对bool 操作。注意,此时 bool(参数) 中的参数,可以是非布尔变量。
- >>> cond = True
- >>> name = ["Cat", "Tom"][bool(cond)]
- >>> name
- 'Tom'
- >>> cond = ""
- >>> name = ["Cat", "Tom"][bool(cond)]
- >>> name
- 'Cat'
- >>>
最后,推荐大家尝试多去运用三目运算表达式。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。