避免在我的代码中使用多个(非嵌套的)if语句

Hil*_*ani 3 python if-statement

我正在编写一个函数来扫描特定的地图(2D数组).为了避免在阵列外部扫描斑点,我写了一些if语句,但感觉这是错误的,长期的,低效的方式.

H是地图的高度值,int W表示宽度,int c是当前点,包含x和y值的元组.

    floorH = c[0]-D
    floorW = c[1]-D
    ceilingH = c[0]+D+1
    ceilingW = c[1]+D+1
    if floorH < 0:
        floorH = 0
    if floorW < 0:
        floorW = 0
    if ceilingH > H:
        ceilingH = H
    if ceilingW > W:
        ceilingW = W
Run Code Online (Sandbox Code Playgroud)

我怎么能写得更好?

提前致谢 :)

Hoo*_*oog 8

您可以使用max和min函数,而不是使用条件.

floorH = c[0]-D
floorW = c[1]-D
ceilingH = c[0]+D+1
ceilingW = c[1]+D+1
floorH  = max(floorH, 0)
floorW  = max(floorW, 0)
ceilingH = min(ceilingH , H)
ceilingW = min(ceilingW , W)
Run Code Online (Sandbox Code Playgroud)

实际上你可以做得更短:

floorH  = max(c[0]-D, 0)
floorW  = max(c[1]-D, 0)
ceilingH = min(c[0]+D+1, H)
ceilingW = min(c[1]+D+1, W)
Run Code Online (Sandbox Code Playgroud)