python - 如何减少 if 语句并缩短代码?
问题描述
我的代码工作,但是,弹出一个错误,说有太多的语句。
我不知道如何减少语句,因为每个语句在函数中都有一个目的。
def is_sink(elevation_map: List[List[int]], cell: List[int]) -> bool:
"""Return True if and only if cell exists in the elevation map
elevation_map and cell is a sink.
Precondition: elevation_map is a valid elevation map.
cell is a 2-element list.
>>> is_sink(THREE_BY_THREE, [0, 5])
False
>>> is_sink(THREE_BY_THREE, [0, 2])
True
>>> is_sink(THREE_BY_THREE, [1, 1])
False
>>> is_sink(FOUR_BY_FOUR, [2, 3])
True
>>> is_sink(FOUR_BY_FOUR, [3, 2])
True
>>> is_sink(FOUR_BY_FOUR, [1, 3])
False
"""
x = cell[0]
y = cell[1]
x_initial = 0
x_final = 0
y_initial = 0
y_final = 0
if x > len(elevation_map):
return False
elif y > len(elevation_map[0]):
return False
if x - 1 < 0:
x_initial = x
else:
x_initial = x - 1
if x + 1 >= x:
x_final = x
else:
x_final = x + 1
if y - 1 < 0:
y_initial = y
else:
y_initial = y - 1
if y + 1 >= y:
y_final = y
else:
y_final = y + 1
validsink = True
for i in range(x_initial, x_final + 1):
for j in range(y_initial, y_final + 1):
if elevation_map[i][j] < elevation_map[x][y]:
validsink = False
return validsink
R0915 (too-many-statements) 出现次数:1. [第 142 行] 语句过多 (24/20)
解决方案
这看起来像一个 py-lint 警告,表明您的代码试图在一个例程中做太多事情。并不是真正的错误,但它确实指出了不太理想的编码实践。
你可以在那里减少一些东西。
if x - 1 < 0:
x_initial = x
else:
x_initial = x - 1
可以变成
x_initial = x if x - 1 < 0 else x - 1
对于 x_final、y_initial 和 y_final,依此类推。
推荐阅读
- fluentd - 在fluentd中重命名特定字典中的所有键
- eclipse - 从与 eclipse 相同的控制台运行 maven 命令
- python-3.x - 正则表达式提取多个连字符之间的文本
- uwp - 带有日期的 UWP 滚动条
- flutter - 为了缩短 Flutter / dart 中的复杂布局,处理将数据传递给小部件的最佳方法是什么?
- java - 如何将 Firestore 时间戳转换为 Java LocalDate?
- reactjs - 如何渲染页眉,页脚,菜单,仅一次且仅用于带有反应 js 的私有路由?
- python - 变量未添加到数组中
- mysql - 在 SQL 查询中需要帮助以检查是否有医生访问
- powerbi - 返回的错误:'OLE DB 或 ODBC 错误:[DataSource.Error] Teradata:[Teradata Database] [3119] 继续请求提交但没有响应返回