Функция, которая вычисляет среднее значение списка и возвращает элементы, которые превышают математическое среднее значение всего списка. - PullRequest
1 голос
/ 17 октября 2019

Я пытаюсь создать функцию, которая будет вычислять среднее значение для данного списка, а затем возвращает все элементы в этом списке, которые превышают математическое среднее значение этого списка. Пример: если задан список [1,2,3,4,5,6], среднее значение будет 3,5. Таким образом, функция должна распечатывать числа (4,5,6).

Я дошел до того, что добавил все числа в списке, но независимо от того, что я делаю, я не могу понять,как получить среднее значение или заставить его распечатать числа, которые превышают математическое среднее.

Это то, что у меня есть, чтобы добавить все элементы любого списка:

def accum2(seq):


  total = 0

  for x in seq:
    total += x



  return total


print (accum2([1,2,3,4,5,6]))

Ожидаемый результат печати (АКБ2 ([1,2,3,4,5,6])) должен быть (4,5,6), но пока я просто получаю ответ, где он просто складывает всеномер в указанном списке.

Любая помощь будет принята с благодарностью. Заранее благодарим.

Ответы [ 3 ]

0 голосов
/ 17 октября 2019

вот простой код, который должен работать. Я добавил комментарии.

    originallist = [1,2,3,4,5,6] #This is your original list
    outputlist = [] #This is the list which you can add correct values to

    x = sum(originallist) / len(originallist) #This effectively finds you the average

    for item in originallist: #Checks which items are greater than average
        if item > x:
            outputlist.append(item) #If greater, add to the final list


    print(outputlist)
0 голосов
/ 17 октября 2019

Есть много правильных способов сделать это, один из которых показан ниже (Python 3).

lst = [1,2,3,4,5,6]
avg = sum(lst)/len(lst)
res = list(filter(lambda x: x > avg, lst))
print(res)

произведет [4,5,6].

Я предпочитаю этот подход, потому что он менее многословен, чем циклы, а также может быть легче переведен в каркас, такой как Pandas или возможныйпараллельная реализация, если такая необходимость возникнет в будущем (например, с использованием Spark).

0 голосов
/ 17 октября 2019

Самый простой способ получить среднее значение списка числовых значений - это использовать методы:

average = sum(seq) / len(seq)

Оттуда просто используйте условный оператор (вам, возможно, придется сначала отсортировать список, еслиэто не отсортировано). Оттуда вы сможете создать новый список, используя встроенные методы списка.

...