Рассчитать среднее значение списка по определенной точке в списке? - PullRequest
1 голос
/ 18 февраля 2020

У меня есть вопрос, я знаю, что можно вычислить среднее значение по списку, но можно ли рассчитать среднее значение, но по определенной точке?

Например:

def Average(lst): 
    return sum(lst) / len(lst)

list = [2, 8, 6, 7, 3, 2, 1]
average = Average(lst) 

Печать среднего значения списка:

print("Average of the list =", round(average, 2))

Вывод: Среднее по списку = 4,14

Скажем, мы хотим сохранить первые 3 значения и усреднить остальные, чтобы в них было только 4 значения список

Итак, мой новый список:

list = [2, 8, 6, 7, 3, 2, 1] 
new_list = [2, 8, 6, 12.25]

Изменить 1

Спасибо всем за ответы. У меня есть другой вопрос, скажем, я не знаю длину моего списка, и я просто хочу 4 элемента в моем новом списке. Как я мог заняться этим?

Ответы [ 4 ]

0 голосов
/ 18 февраля 2020

, если вы хотите вычислить среднее значение элементов списка для указанной c области из списка и создать новый список с остальными элементами и указанным c средним значением области, которую вы можете использовать:

import statistics

l = [2, 8, 6, 7, 3, 2, 1] 

start = 3
end = 5

new_list = [*l[:start], statistics.mean(l[start: end]), *l[end:]]
new_list

вывод:

[2, 8, 6, 5, 2, 1]
0 голосов
/ 18 февраля 2020

Ваша функция Average будет работать так же хорошо в slice исходного списка.

Итак, для вашего примера:

new_list = list[:3] + [Average(list[3:])]
print(new_list)

Будет выводить:

[2, 8, 6, 3.25]

Синтаксис slice, используемый здесь, полезен для выбора только подпоследовательностей списка. Таким образом, синтаксис list[start:stop:step], причем каждый из start, stop и step является необязательным. Вы можете прочитать больше здесь . Приведенные примеры будут особенно полезны.

0 голосов
/ 18 февраля 2020

Предположим, вы хотите округлить список из индекса (Здесь 3)

mylist = [2, 8, 6, 7, 3, 2, 1]

def round_list(lst, index):
    avg = [sum(lst[int(index):])/(len(lst)-index)]
    new_lst = (lst[:int(index)]) + avg
    return new_lst

new_list = round_list(mylist, 3)
print(new_list)

вывод: [2, 8, 6, 3.25]

0 голосов
/ 18 февраля 2020

Вы можете сделать это так

l=[2, 8, 6, 7, 3, 2, 1]
pt=3
l=l[:pt]+[sum(l[pt:])/len(l[pt:])]

вывод:

[2, 8, 6, 3.25]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...