Расчет среднего значения в python - PullRequest
1 голос
/ 26 февраля 2020

У меня есть функция для вычисления усеченного среднего. Для этого я использую новый созданный список " trimmed_list ". Но если a = 0 , обрезанный список будет пустым, поскольку s [a: -a] в этом случае не работает , Есть ли способ исправить код без какого-либо импорта?

Пример: с этим кодом tmean (x, 0.2) = Нет вместо 29

x=[1,20,10,85]

def tmean(x, alpha):
  if alpha <0:
    raise ValueError("Alpha needs to be between 0 and 1")
  s = sorted(x)
  a = int(alpha * len(x))
  trimmed_list = s[a:-a]
  if len(trimmed_list) == 0:
    return "No calculation possible"
  trimmed_ave = sum(trimmed_list)/len(trimmed_list)
  return float(trimmed_ave)

1 Ответ

1 голос
/ 27 февраля 2020

Как насчет добавления простого условия if, чтобы проверить, является ли a значением 0.

x=[1,20,10,85]

def tmean(x, alpha):
    if alpha <0:
        raise ValueError("Alpha needs to be between 0 and 1")
    a = int(alpha * len(x))
    if a == 0:
        return sum(x)/float(len(x)) # return mean
    s = sorted(x)
    trimmed_list = s[a:-a]
    if len(trimmed_list) == 0:
        return "No calculation possible"
    trimmed_ave = sum(trimmed_list)/len(trimmed_list)
    return float(trimmed_ave)

Надеюсь, это поможет.

...