Python中if-else语句的多种写法

来源:互联网 发布:数据恢复大师怎么用 编辑:程序博客网 时间:2024/05/17 02:44

原文:http://www.open-open.com/lib/view/open1346511811678.html


a, b, c = 123

1.常规

if a>b:

    c = a

else:

    c = b

2.表达式

c = a if a>b else b

3.二维列表

c = [b,a][a>b]

4.传说是源自某个黑客

c = (a>b and [a] or [b])[0]


试验了下  c = a>b and a or b  与4效果一样

但是 当a = 0 的时候会出跳过a, 直接到b。


以下来自 Dive_into_python 5.4

例 4.19. 安全使用 and-or 技巧

>>> a = "">>> b = "second">>> (1 and [a] or [b])[0] 1''
1由于 [a] 是一个非空列表,所以它决不会为假。即使a0 或者 '' 或者其它假值,列表[a] 也为真,因为它有一个元素。

到现在为止,这个技巧可能看上去问题超过了它的价值。毕竟,使用 if 语句可以完成相同的事情,那为什么要经历这些麻烦事呢?哦,在很多情况下,你要在两个常量值中进行选择,由于你知道a 的值总是为真,所以你可以使用这种较为简单的语法而且不用担心。对于使用更为复杂的安全形式,依然有很好的理由要求这样做。例如,在Python 语言的某些情况下 if 语句是不允许使用的,比如在lambda 函数中。


原创粉丝点击