【Python技巧系列】条件语句一行实现

发现了一种巧妙的条件语句实现方式:(是在pattern的README中的一个小例子里面看到的)

1 1 if A < 1:
2 2     B
3 3 else:
4 4     C
5 5 
6 6 ###can be transformed to
7 7 
8 8 A < 1 and B or C
9 9  

得益于python灵活的格式转换,  and, or 这些逻辑符号我一直认为计算得到的是布尔值,只能用在判断语句中,比如:

 1 if 1 and 2:
 2     print 1
 3 
 4 >> 1
 5 
 6 
 7 a = 1
 8 b = 1
 9 
10 if a == 1 and b == 1:
11     print 1
12 
13 >> 1

然而当把表达式单独计算时,比如这样:

1 >> True and 1
2 >> 1

因此得到的结果并非默认为布尔值,布尔值的转换不是在逻辑符号处进行,而是在遇见了条件选择符号 if, else, elif 后进行。

同样的,有

1 >> False and 2
2 >> False
3 
4 >> False or 2 
5 >> 2 

 

 

对更多条件分支的情况,可类似地实现,比如上面的二叉树:

1 #reach the node b = 0
2 >> a = 0
3 >> b = 0
4 >> a == 1 and 1 or b == 1 and 1 or 0
5 >> 0

 

posted @ 2015-09-25 18:07  gooey  阅读(2834)  评论(0编辑  收藏  举报