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

#python

#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. Мы (возможно) поможем исправить неработающий код. Мы не служба оптимизации.

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

3. Просмотр кода может быть лучшим выбором для вашего запроса. Однако, пожалуйста, внимательно прочитайте страницу справки и убедитесь, что ваш пост соответствует теме.

4. все может улучшить его, сохраняя при этом правильность

5. Одна вещь: не вызывайте свои переменные c . d , f . l . s и t . Используйте значимые имена

Ответ №1:

Имея в виду некоторые комментарии, т. Е. Это не для оптимизации, а скорее для исправления неработающего кода, я могу указать вам правильное направление:

Заменить этот раздел кода:

 if s > c:
  retval.append(c)
  

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

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

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