我正在研究列表理解
[0 if N<2 else val*2 for val in range(0,N//2)]
当N <2时,我期望输出为[0],但我得到[]
从计算机的角度来看,这就是您的表达方式。
[(0 if N < 2 else val * 2) for val in range(0, N // 2)]
所以for
首先发生。如果N
小于2
,range(0, N // 2)
则为空,因此该0 if N < 2 else val * 2
位永远不会执行。
在您的情况下,仅具有两个不同的情况会更有意义。
if N < 2:
return [0]
else:
return [val * 2 for val in range(0, N // 2)]
或者,如果您想要一行,
[0] if N < 2 else [val * 2 for val in range(0, N // 2)]
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句