你能帮我优化这段代码吗?

时间:2016-10-19 14:08:05

标签: python

你可以帮我优化这段代码

def calc_potential(time, firstsale, lastsale, sold, supplied):
    retval = []
    for t, f, l, c, s in zip(time, firstsale, lastsale, sold, supplied):
        try:
            if s > c:
                retval.append(c)
            else:
                s = (l - t).total_seconds() / 3600.
                d = ((t - f).total_seconds() / 3600.) / c
                retval.append(s / d + c)
        except:
            retval.append(None)

    return retval

1 个答案:

答案 0 :(得分:1)

请记住一些评论,即这不是为了优化,而是修复损坏的代码,我可以指出正确的方向:

要替换此部分代码:

if s > c:
  retval.append(c)

为了提高效率,请尝试列表理解:

retval= [c for c, s in zip(sold, supplied) if s>c]

如果你对else语句中的代码执行类似的操作,并将两个列表组合在一起。您将以一种可能的方式拥有您想要的东西。