python并不支持
? :
这种符号所表达的先判断再选择的含义,但仍然有相应的语法支持:
1. Python 的语法支持
为真时的结果 if 判断条件 else 为假时的结果(注意,没有冒号)
顺序略有不同,
x = x+1 if x%2==1 else x
在比如我们欲实现一个基础版本(递归版本)的斐波那契数列:
def fn(n):
return n if n < 2 else fn(n-1)+fn(n-2)
Python 中的三目运算符目的是得到一个结果,未必就是将该结果return,或者进行简单的变量赋值,如下:
l = []
l.append(1 if x>=1. else 0)
一个应用实例请见
十进制小数<==>二进制小数
C/C++也是如此,所以我们不要窄化对三目运算符的理解:
std::vector<int> vs;
int a, b;
vs.push_back(a > b ? a : b);
-
赋值表达式,当条件判断成立时,变量赋值为 .3,不成立时,变量赋值为 .5
-
a = .3 if predicate else .5
2. 使用 np.where
使用
np.where()
:
np.where(判断条件,为真时的处理,为假时的处理)
x = np.where(x%2==1, x+1, x)
3. 三目运算符更为奇特的用法
int max, min;
n > m ? (max = n, min = m):(max = m, min = n);
1、单
目
运算符
:
单
目
运算符
是指
运算
所需变量为一个的
运算符
,又叫一元
运算符
,其中有逻辑非
运算符
:!、按位取反
运算符
:~、自增自减
运算符
:++, –等。
逻辑非
运算符
【!】、按位取反
运算符
【~】、自增自减
运算符
【++, –】、负号
运算符
【-】、类型转换
运算符
【(类型)】、指针
运算符
和取地址
运算符
【*和&】、长度
运算符
【sizeof】
2、双
目
运算符
:
双
目
运算符
就是对两个变量进行操作
浏览器打开
之前学习的
Python
提到了对于类似C语言的三元条件表达式condition ? true_part : false_part,虽然
Python
没有三
目
运算符
(?:),但也有类似的替代方案,那就是true_part if condition else false_part。
>>> 1 if True else 0
>>> 1 if False else 0
>>> "Fire" if
浏览器打开
return a if a>b else b
上面这两个函数实现的功能是完全一样的。第二个函数中 a if a>b else b 就是一个三元表达式。 左边是条件为真时返回的值,中间是判断条件,右边是条件假返回的值。
二、列表推导式
浏览器打开
True_statements if expression else False_statements
三
目
运算符
的规则是:先对逻辑表达式 expression 求值,如果逻辑表达式返回 True,则执行并返回 True_statements ...
浏览器打开
Python
中没有像 C 语言中一样直接使用 x?a:b 这样的三元表达式,但是它有两种替代方法:方法一a if x else b如果 x 为 True,返回 a;否则返回 b>>> 'True' if 2 > 1 else 'False'
'True'
>>> 'True' if 2 < 1 else 'False'
'False'
>&g...
浏览器打开
一、and:在
Python
中,and 和 or 执行布尔逻辑演算,如你所期待的一样,但是它们并不返回布尔值;而是,返回它们实际进行比较的值之一。>>> 'a' and 'b' 'b' >>> '' and 'b' '' >>> 'a' and 'b' and 'c' 'c'在布尔上下文中从左到右演算表达式的值,如果布尔上下文
中的
所有值都为真,那么 and 返回最后一个值。如果布尔上下文
中的
某个值...
浏览器打开