今天看见一个代码很诧异,跟自己理解的执行顺序有一定差异,然后查阅资料发现,自己步入一个误区,在此分享出来,以供参考:
for i in range(l):
summ +=arr[i] if val>arr[i] else val
其实这就是一个三元表达式:
把 if-else块 写到一行或者一个表达式中 并且产生一个值
我们可以把他拆解:
for i in range(l):
if val>arr[i]:
summ +=arr[i]
else:
summ +=val
再举个例子:
>>> x = 4
>>> y = 99 if x >= 3 else 999
>>> y
99
就等于:
x = 4
if x >= 3:
y = 99
else:
y = 999