Python:and和or的特殊性质
2014-08-26 15:08
459 查看
在Python 中,and 和 or 执行布尔逻辑演算,如你所期待的一样。但是它们并不返回布尔值,而是返回它们实际进行比较的值之一。
(类似C++里面的&&和||的短路求值)
( 在布尔环境中,0、''、[]、()、{}、None为假;其它任何东西都为真。但是可以在类中定义特定的方法使得类实例的演算值为假。)
and实例:
>>> 'a' and 'b'
'b'
>>> '' and 'b'
''
>>> 'a' and 'b' and 'c'
'c'
从左到右扫描,返回第一个为假的表达式值,无假值则返回最后一个表达式值。
or实例:
>>> 'a' or 'b'
'a'
>>> '' or 'b'
'b'
>>> '' or [] or{}
{}
从左到右扫描,返回第一个为真的表达式值,无真值则返回最后一个表达式值。
and-or搭配:
[python]
>>> a = "betabin"
>>> b = "python"
>>> 1 and a or b
'betabin'
>>> 0 and a or b
'python'
看起来类似于于我们C++中的条件运算符(bool?a:b),是的,当a为true的时候是一样的。但是,当a为false的时候,就明显不同了。
如果坚持要用and-or技巧来实现条件运算符的话,可以用种安全的方法:
[python]
>>> a = ""
>>> b = "betabin"
>>> (1 and [a] or [b])[0]
''
就是万能的[],把a为假的可能性给抹杀掉,然后通过[0]再获得(因为要通过[0]获得元素,所以b也得加上[])。
这个and-or技巧主要在lambda中使用。
(类似C++里面的&&和||的短路求值)
( 在布尔环境中,0、''、[]、()、{}、None为假;其它任何东西都为真。但是可以在类中定义特定的方法使得类实例的演算值为假。)
and实例:
>>> 'a' and 'b'
'b'
>>> '' and 'b'
''
>>> 'a' and 'b' and 'c'
'c'
从左到右扫描,返回第一个为假的表达式值,无假值则返回最后一个表达式值。
or实例:
>>> 'a' or 'b'
'a'
>>> '' or 'b'
'b'
>>> '' or [] or{}
{}
从左到右扫描,返回第一个为真的表达式值,无真值则返回最后一个表达式值。
and-or搭配:
[python]
>>> a = "betabin"
>>> b = "python"
>>> 1 and a or b
'betabin'
>>> 0 and a or b
'python'
<span style="font-size:24px;">>>> a = "betabin" >>> b = "python" >>> 1 and a or b 'betabin' >>> 0 and a or b 'python'</span>
看起来类似于于我们C++中的条件运算符(bool?a:b),是的,当a为true的时候是一样的。但是,当a为false的时候,就明显不同了。
如果坚持要用and-or技巧来实现条件运算符的话,可以用种安全的方法:
[python]
>>> a = ""
>>> b = "betabin"
>>> (1 and [a] or [b])[0]
''
<span style="font-size:24px;">>>> a = "" >>> b = "betabin" >>> (1 and [a] or [b])[0] ''</span>
就是万能的[],把a为假的可能性给抹杀掉,然后通过[0]再获得(因为要通过[0]获得元素,所以b也得加上[])。
这个and-or技巧主要在lambda中使用。
相关文章推荐
- Python:and和or的特殊性质
- Python中and和or的特殊性质
- python and-or 用法
- python之位运算,and , or
- [Python]计算闰年时候出现的and和or优先级的问题以及短路逻辑
- Python 的 and-or 技巧
- 今天开始学Python(and 和 or 运算)
- 【python】Python 的 and-or 技巧
- python 函数- and-or 技巧学习
- python中的and和or(转载)
- 深入Python(3): and、or以及and-or
- Python中AND、OR的一个使用小技巧
- python笔记(七) - and和or
- Python中的and和or
- python 中的or 和 and
- How draw a stem -and -leaf & box-plot display by R.or Python
- python中使用and和or来实现其它语言中的?号表达式
- python的and 和or逻辑
- python and 和 or
- python中and和or的用法