从列表中的某一点计算列表的平均值



我有一个问题,我知道可以计算列表的平均值,但可以从某个点计算平均值吗?

例如:

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个元素。我该如何应对?

假设您想从索引中四舍五入列表(这里是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]

你可以这样做

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

输出:

[2, 8, 6, 3.25]

您的函数Average在原始列表的slice上也同样有效。

所以,举个例子:

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

将输出:

[2,8,6,3.25]

这里使用的slice语法对于仅选择列表的子序列非常有用。总之,语法为list[start:stop:step],其中startstopstep中的每一个都是可选的。你可以在这里阅读更多。所举的例子将特别有用。

如果您想从列表中计算特定区域的列表元素平均值,并用其他元素和特定区域的平均值创建一个新列表,您可以使用:

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]

相关内容

最新更新