缩短代码的执行时间,以免超时

时间:2019-08-08 02:57:27

标签: python-3.x

在某些情况下,我有一段有效的代码,但是在某些情况下,这会花费更多的时间并导致超时。请有人帮助改善此问题吗? [编辑]:让我解释一下它是如何工作的 函数接受列表作为输入 函数返回一个列表作为输出,如下所示: 1.最小的列表应该在中间 2.下一个最小的数字应该附加在列表的末尾 3.下一个最小的数字应该在列表的开头 4.下一个最小的数字应该附加在列表的末尾 5.下一个最小的数字应该附加在列表的开头 4.继续...除非我们扫描所有输入列表

def pendulum(values):
    result=[]
    while(len(values)):       
        min_num=min(values)
        result.insert(0,min_num)
        values.remove(min_num) 
        if len(values)>0:
            min_num=min(values)
            result.insert(len(result),min_num)
            values.remove(min_num)
    return result

1 个答案:

答案 0 :(得分:0)

最大的问题是您的代码为每个元素搜索最少一次。对列表进行预排序将使其更快。您还将插入列表的前面,这将强制移动列表中的每个其他元素。为了解决这个问题,我只使用append,然后反转列表的前半部分。

def pendulum(values):
    front = []
    back = []
    next_goes_to_front = True
    for value in sorted(values):
        if next_goes_to_front:
            front.append(value)
        else:
            back.append(value)
        next_goes_to_front = not next_goes_to_front
    return list(reversed(front)) + back