【Python】if-else和for的后置用法
if-else后置
if-else的后置类似于C++的三目运算符:
int a = 1;
int b = 2;
int c = a>b?a:b; // 取得a,b中的较大值保存在c中
int d = a>b?(a>c?a:c):(b>c?b:c); // 嵌套写法,有较多冗余
python:
a = 1
b = 2
c = a if a > b else b # if中条件满足则返回a,否则返回b
d = a if a > b else b if b > c else c # 嵌套写法,类似自然语言,可读性强
for后置
用于产生一个generator,包含符合for条件的所有元素:
# python版本:3.6
a = list(str(x) for x in range(4))
print(a)
# ['0', '1', '2', '3']
相当于如下写法:
def fun(a, n):
x = a
while x < n:
yield str(x)
x = x + 1
a = list(fun(0, 4))
print(a)
# ['0', '1', '2', '3']