Python中AND-OR的用法
2013-08-27 09:21
435 查看
学习Python中的lambda函数的时候,才发现原来Python中的AND和OR还可以有一些别的用法。Python中的布尔逻辑计算的结果并非返回布尔值,而是返回它们相互之间的某一个。文章的部分例子来源于Dive Into Python。
AND
AND的表达式返回所遇到的第一个假值,如果表达式中无假值,则返回表达式中最后一个值。在Python中,0、‘’、[]、()、None这五个值在布尔环境中为假,例子如下:
第一个表达式中,()为假,所以表达式从左到右计算,返回第一个假值。而第二个表达式中,并没有假值,所以返回最后一个真值。
OR
OR的表达式和And表达式一样也是从左到右的计算,计算的结果为所遇到的第一个真值,如果表达式无真值,就返回表达式最后一个假值。例子如下:
第一个表达式中,从左到右计算,'python'字符串为第一个真值,返回它。第二个表达式中,所以个值都为假,返回最后一个假。
AND-OR 技巧
Python中可以使用AND-OR来模拟C中的bool ? a : b 的表达式。先看个例子:
这样使用AND-OR就可以达到了bool ? a : b的要求。但其中有个问题,假如a值为假值得话,最后的结果就不是我们想要的了。
a为假,所以 1 and a 为 '',''和'second'计算的结果为'second'。其实我们可以利用下面的技巧来安全的使用AND-OR。
通过使用非空列表的方式,防止a和b为假值。这样就达到目的了啊!有的时候我们可以将这样的用法和lambda表达式结合在一起用,比如下面这个表达式:
这是一个lambda函数,假如collapse为真,则将s中所有的空白去除,假如为假的话,则保留这些空白。
AND
AND的表达式返回所遇到的第一个假值,如果表达式中无假值,则返回表达式中最后一个值。在Python中,0、‘’、[]、()、None这五个值在布尔环境中为假,例子如下:
>>>() and 'foo' () >>>'python' and 'foo' and 'lambda' 'lambda'
第一个表达式中,()为假,所以表达式从左到右计算,返回第一个假值。而第二个表达式中,并没有假值,所以返回最后一个真值。
OR
OR的表达式和And表达式一样也是从左到右的计算,计算的结果为所遇到的第一个真值,如果表达式无真值,就返回表达式最后一个假值。例子如下:
>>>'' or 'python' 'python' >>>'' or () or {} {}
第一个表达式中,从左到右计算,'python'字符串为第一个真值,返回它。第二个表达式中,所以个值都为假,返回最后一个假。
AND-OR 技巧
Python中可以使用AND-OR来模拟C中的bool ? a : b 的表达式。先看个例子:
>>>a = 'first' >>>b = 'second' >>>1 and a or b 'first' >>>0 and a or b 'second'
这样使用AND-OR就可以达到了bool ? a : b的要求。但其中有个问题,假如a值为假值得话,最后的结果就不是我们想要的了。
>>>a = '' >>>b = 'second' >>>1 and a or b 'second'
a为假,所以 1 and a 为 '',''和'second'计算的结果为'second'。其实我们可以利用下面的技巧来安全的使用AND-OR。
>>> a = "" >>> b = "second" >>> (1 and [a] or [b])[0]
通过使用非空列表的方式,防止a和b为假值。这样就达到目的了啊!有的时候我们可以将这样的用法和lambda表达式结合在一起用,比如下面这个表达式:
processFunc = collapse and (lambda s: " ".join(s.split())) or (lambda s: s)
这是一个lambda函数,假如collapse为真,则将s中所有的空白去除,假如为假的话,则保留这些空白。
相关文章推荐
- Python 学习系列(2)and、or用法
- python中 and和or用法
- python关键字and和or用法实例
- 无意学会了python中and和or的有趣用法
- python 中 and 和 or 的用法
- python and-or 用法
- 【python】and和or的用法
- python关键字and和or用法实例
- python中and和or的用法
- python and和or的用法
- python中and和or的用法
- python and 和 or的用法
- python关键字and和or用法实例
- python中and和or的用法
- python布尔类型关于and和or用法说明马克
- Python中的and和or
- mysql 中 and 和 or 的用法
- python and与or
- mysql where 条件语句中的OR和AND的用法注意!
- 【转载】python 中的 and、or、and-or