【发布时间】:2019-10-24 04:55:18
【问题描述】:
我正在处理一个代码挑战,我必须尽可能减少执行时间,我唯一能找到可以改进的地方是嵌套 for- 中的嵌套 if-else 语句-循环,但我不确定如何即兴发挥。
这是我的代码:
mat = [[0] * n] * n
count = 0
for i in range(n,0,-1):
count += 1
for j in range(i,n+1,1):
if i == j:
pass
else:
if getEnemyStatus(mat, i, j):
break
else:
if isEnemy(enemyDict, i, j):
setStatus(mat, i, j)
break
else:
count += 1
n的值可以是 1 到 10^5
【问题讨论】:
-
你能显示完整的代码吗?
-
好的。仅此部分代码无法为您提供帮助...
-
你怎么知道这是唯一可以优化的东西?什么是敌人和状态功能?你能优化它们吗?什么是垫子?
-
您可以跳过
range中以i+1开头的第一个if条件。 -
你应该真的提供一个minimal reproducible example - 也许一开始你应该在解决性能问题之前让你的代码启动并运行(有意义)。至少我怀疑
mat = [[0] * n] * n是否符合您的要求,因为它会创建一个 list 副本 的列表,如果您在其中进行更改,例如m[0][1]所有m[n][1]都会相应更改。或者这是故意的,你知道并经过测试?
标签: python python-3.x for-loop