我正在编写一个函数来扫描特定 map (二维数组)。为了避免扫描数组外的点,我写了一些 if 语句,但感觉是错误的、冗长的、低效的方法。
H为 map 的高度值,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
我怎样才能写得更好?
提前致谢:)
最佳答案
您可以不使用条件,而是使用 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)
关于python - 避免在我的代码中使用多个(未嵌套的)if 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54655227/