【发布时间】:2017-06-21 15:23:12
【问题描述】:
我有以下问题。我有一个参数frc_size。根据 fcr_size 的大小,必须在 if 条件中检查更多距离。有没有办法处理这种聪明并缩短所有这些表达?例如,对于 fcr_size = 3,if 条件如下所示:
minusscore = 2
for coords in full_box:
mindist = float("inf")
for m in range(len(lineSegmentPairs[0])):
newdist = dist(lineSegmentPairs[0][m], lineSegmentPairs[1][m], coords)
if newdist<mindist:
mindist=newdist
if mindist <= radius :
val1 = int(sparse1.get(coords,"0")[0]) - minusscore
sparse1[coords] = [str(val1)]
elif mindist <= (radius +1) :
val1 = int(sparse1.get(coords,"0")[0]) + 3
sparse1[coords] = [str(val1)]
elif mindist <= (radius +2) :
val1 = int(sparse1.get(coords,"0")[0]) + 2
sparse1[coords] = [str(val1)]
elif mindist <= (radius +3) :
val1 = int(sparse1.get(coords,"0")[0]) + 1
sparse1[coords] = [str(val1)]
elif mindist > (radius +3) :
continue
但如果 fcr_size 为 4,则需要额外的 if 条件,例如:
minusscore = 2
for coords in full_box:
mindist = float("inf")
for m in range(len(lineSegmentPairs[0])):
newdist = dist(lineSegmentPairs[0][m], lineSegmentPairs[1][m], coords)
if newdist<mindist:
mindist=newdist
if mindist <= radius :
val1 = int(sparse1.get(coords,"0")[0]) - minusscore
sparse1[coords] = [str(val1)]
elif mindist <= (radius +1) :
val1 = int(sparse1.get(coords,"0")[0]) + 4
sparse1[coords] = [str(val1)]
elif mindist <= (radius +2) :
val1 = int(sparse1.get(coords,"0")[0]) + 3
sparse1[coords] = [str(val1)]
elif mindist <= (radius +3) :
val1 = int(sparse1.get(coords,"0")[0]) + 2
sparse1[coords] = [str(val1)]
elif mindist <= (radius +4) :
val1 = int(sparse1.get(coords,"0")[0]) + 1
sparse1[coords] = [str(val1)]
elif mindist > (radius +4) :
continue
【问题讨论】:
-
你对
mindist <= (radius +4)和mindist <= (radius +3)的操作是一样的,是不是笔误? -
我建议你使用 4 个空格而不是 8 个进行缩进。它肯定会提高可读性,请参阅PEP8。
-
是的,我编辑了 fcr_size 4 的样子
标签: python numpy dictionary if-statement scipy