2016-10-19 4 views
-5

вы можете помочь мне, чтобы оптимизировать этот кодвы можете мне помочь оптимизировать этот код

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

Какие аспекты этого, по вашему мнению, могут быть оптимизированы? –

+0

[Code View] (http://codereview.stackexchange.com/tour) может быть лучшим выбором для вашего запроса. Пожалуйста, внимательно прочитайте страницу справки и убедитесь, что ваш пост по теме. –

ответ

1

Имея в виду некоторые из комментариев, то есть это не для оптимизации, а фиксации сломанной код, я могу указать вам правильное направление:

Чтобы заменить этот фрагмент кода:

if s > c: 
    retval.append(c) 

Для более эффективной, попробуйте список понимание:

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

Если вы делаете что-то подобное для кода в инструкции else, а также объединяете оба списка. У вас будет то, что вы хотите одним возможным способом.

Смежные вопросы