希望我能正确解释这一点,而无需粘贴整个代码墙。
我有一个清单[0:100]。我需要在列表中找到最低的值,它将在另一个函数中返回True。
诀窍是我需要快速完成!到目前为止,一些数据处理时间超过65秒,因为后者的功能在列表中的特定索引上重复超过1000次。
def search(list,grid):
print(list)
if len(list) <= 2:
return list[0]
else:
p = len(list)//2
print(p)
print(list[p])
if simulation(grid,list[p]) == 'lose':
return search(list[p:len(list)-1],grid)
elif simulation (grid,list[p]) == 'win':
return search(list[0:p],grid)
对于某个输入,我需要该函数在不到10秒的时间内返回结果。无论如何,我可以精确地找到我正在寻找的值,而不必将每个值从0到100传递给依赖列表的函数?
答案 0 :(得分:2)
达到目标可能还不够,但一个明显的改进是避免重新计算相同值的模拟,以防它不是输。
删除所有打印输出也会加快速度。
def search(seq, grid):
if len(seq) <= 2:
return seq[0]
p = len(seq)//2
sim_result = simulation(grid, seq[p])
if sim_result == 'lose':
return search(seq[p: len(seq)-1], grid)
elif sim_result == 'win':
return search(seq[0: p], grid)
您可能需要了解如何运行模拟以进一步改进。