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
答案 0 :(得分:1)
请记住一些评论,即这不是为了优化,而是修复损坏的代码,我可以指出正确的方向:
要替换此部分代码:
if s > c:
retval.append(c)
为了提高效率,请尝试列表理解:
retval= [c for c, s in zip(sold, supplied) if s>c]
如果你对else语句中的代码执行类似的操作,并将两个列表组合在一起。您将以一种可能的方式拥有您想要的东西。