python中&和and的区别及三目运算符的实现
2018-02-14 23:19
477 查看
python中&和and的区别及三目运算符的实现
&和and的区别python中的&符号延续的了C/C++的含义,指的是位运算
而用and来代替C/C++中的&&,来进行逻辑运算,实例如下:
>>> print(1 & 2) # 1 的二进制是 01,2的二进制是 10 0 >>> print(1 and 2) 2
要注意的是,在实例中,1 and 2的返回值是2,而不是1
因为在python中,由于短路效应:a and b,a为False,b不会被判断,直接返回a;a为True,表达式的值就取决于b,因此就返回b 。or运算同理,a or b,a为Ture,b不会被判断,直接返回a;a为False,表达式的值就取决于b,因此就返回b 。
这是与C/C++不一样的,在C/C++中,也有短路效应,但逻辑运算只返回0或1
>>> print(False and 1) False >>> print(0 and 1) 0 >>> print([] and 1) [] >>> print(2 and 1000) 1000
从上面例子中也可以看出,在a and b中,不论a,b是哪种形式,都是直接返回a,b本身的值
经典笔试题
这里以一道经典的笔试题为例,实际运用上述特性:
求1+2+3+…+n。但要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句。
分析:求解1+2+3+…+n,很容易想到的应该是递归,在不能使用条件判断语句的情况下,可以使用逻辑运算短路的方法得到递归停止的条件
def Sum_Solution(n): ans=n temp=ans and Sum_Solution(n-1) ans=ans+temp return ans
三目运算符
在C/C++中,有 ? : 三目运算符,在python中,也有同样的实现:
为真时的结果 if 判断条件 else 为假时的结果(注意,没有冒号)
上述试题如果没有条件判断语句if else的限制,可以用三目运算2行代码实现
def Sum_Solution(n): return n + Sum_Solution(n-1) if n > 0 else 0
Life is short, You need Python~
相关文章推荐
- Python——and操作符和C中&&的区别
- C和CPP的区别 & C++,Java and Python的区别
- python中&和and的区别
- js中运算符"=="与"==="的区别
- c++&&python实现Hadoop Streaming的partitioner和模块化
- python中的单元测试pyUnit & what is unit test and why
- What is the difference between '/n' and '/r/n'? /n /r/n的区别是什么
- 利用JScript中运算符"||"和"&&"的特殊特性实现代码精简第1/2页
- Python: classmethod & staticmethod 区别
- python中运算符‘is’,'is not'和‘==’,’!=‘的区别
- python copy & deepcopy 区别
- 第九周试验任务1--定义Time类中的<<和>>运算符的重载,实现输入和输出。
- 第九周实验任务二--定义Complex类中的<<和>>运算符的重载,实现输入和输出,使程序读起来更自然
- 《C++第九周实验报告1-1》--------接第8周任务1,定义Complex类中的<<和>>运算符的重载,实现输入和输出
- du and df 命令区别
- ·python·用生成器和迭代器实现自己的xrange
- Python入门的36个例子 之 23 -> Objects and References —— 复制引用还是复制实体对象
- ·python·用生成器和迭代器实现自己的xrange
- VBScript中"\"与"/"运算符的区别
- AndAlso & OrElse Operators in C#短路运算符