python - python优化if语句
问题描述
我想在 python 中优化这个 IF 语句森林。我真的不知道是怎么回事。但我必须减少代码的大小。
def function(pos):
dg = 2
if (board[pos[0] + pat2[0][0]][pos[1] + pat2[0][1]] == 2):
dg *= 2
if (board[pos[0] + pat2[1][0]][pos[1] + pat2[1][1]] == 2):
dg *= 2
if (board[pos[0] + pat2[2][0]][pos[1] + pat2[2][1]] == 2):
dg *= 2
if (board[pos[0] + pat2[3][0]][pos[1] + pat2[3][1]] == 2):
dg *= 2
if (board[pos[0] + pat2[4][0]][pos[1] + pat2[4][1]] == 2):
dg *= 2
if (board[pos[0] + pat8[0][0]][pos[1] + pat8[0][1]] == 2):
dg *= 2
if (board[pos[0] + pat8[1][0]][pos[1] + pat8[1][1]] == 2):
dg *= 2
if (board[pos[0] + pat8[2][0]][pos[1] + pat8[2][1]] == 2):
dg *= 2
if (board[pos[0] + pat8[3][0]][pos[1] + pat8[3][1]] == 2):
dg *= 2
if (board[pos[0] + pat8[4][0]][pos[1] + pat8[4][1]] == 2):
dg *= 2
if (board[pos[0] + pat2[0][0]][pos[1] + pat2[0][1]] == 1):
dg /= 3
if (board[pos[0] + pat2[1][0]][pos[1] + pat2[1][1]] == 1):
dg /= 3
if (board[pos[0] + pat2[2][0]][pos[1] + pat2[2][1]] == 1):
dg /= 3
if (board[pos[0] + pat2[3][0]][pos[1] + pat2[3][1]] == 1):
dg /= 3
if (board[pos[0] + pat2[4][0]][pos[1] + pat2[4][1]] == 1):
dg /= 3
if (board[pos[0] + pat8[0][0]][pos[1] + pat8[0][1]] == 1):
dg /= 3
if (board[pos[0] + pat8[1][0]][pos[1] + pat8[1][1]] == 1):
dg /= 3
if (board[pos[0] + pat8[2][0]][pos[1] + pat8[2][1]] == 1):
dg /= 3
if (board[pos[0] + pat8[3][0]][pos[1] + pat8[3][1]] == 1):
dg /= 3
if (board[pos[0] + pat8[4][0]][pos[1] + pat8[4][1]] == 1):
dg /= 3
return dg
如您所见,不同的行非常相似,我正在寻找另一种解决方案而不是 while 方法。如果你有任何想法我在这里。
谢谢
谢谢
解决方案
第一步是从 0 到 4 进行循环,以避免针对不同索引的许多重复 if:
for i in range(0, 5):
if (board[pos[0] + pat2[i][0]][pos[1] + pat2[i][1]] == 2):
dg *= 2
if (board[pos[0] + pat8[i][0]][pos[1] + pat8[i][1]] == 2):
dg *= 2
if (board[pos[0] + pat2[i][0]][pos[1] + pat2[i][1]] == 1):
dg /= 2
if (board[pos[0] + pat8[i][0]][pos[1] + pat8[i][1]] == 1):
dg /= 2
推荐阅读
- java - Selenium 单击非按钮元素
- firefox - 浏览器(更具体地说是 Firefox)如何知道哪些 cookie 正在跟踪 cookie
- python - 比较数据帧元素,同时仅考虑值并忽略数据类型
- microsoft-dynamics - 我们如何生成Dynamics 365 crm中添加的所有用户的创建日期?
- python - 使用 python 将 excel/csv 转换为以下 json 格式以触发 ansible 作业
- python - Django 语法错误:意外标记 `('
- python - RandomForestClassifier - 尝试识别 sklearn 中的特征重要性的奇怪错误?
- powershell - Powershell,如何捕获 Select-String 的参数并包含匹配的输出
- python - Pandas - NameError:名称'df2'未定义
- java - 我可以同时启用 Talkback 和我的自定义辅助功能服务吗?