减少循环/递归时间

时间:2017-12-02 04:23:36

标签: python loops recursion time

希望我能正确解释这一点,而无需粘贴整个代码墙。

我有一个清单[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传递给依赖列表的函数?

1 个答案:

答案 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)

您可能需要了解如何运行模拟以进一步改进。