避免在我的cod中使用多个(不是嵌套的)if语句

2024-06-26 08:37:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在写一个函数来扫描一个特定的地图(二维数组)。为了避免扫描数组之外的点,我写了一些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

我怎样才能写得更好?你知道吗

提前感谢:)


Tags: 函数if高度错误地图代表数组语句
2条回答

您可以这样格式化if以节省空间:

floorH = c[0]-D if c[0]-D > 0 else 0
floorW = c[1]-D if c[1]-D > 0 else 0
ceilingH = c[0]+D+1 if c[0]+D+1 < H else H
ceilingW = c[1]+D+1 if c[1]+D+1 < W else W

不使用条件,您可以只使用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)

实际上,你可以把它做得更短:

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)

相关问题 更多 >