我有一个问题,我知道可以计算列表的平均值,但可以从某个点计算平均值吗?
例如:
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]
,其中start
、stop
和step
中的每一个都是可选的。你可以在这里阅读更多。所举的例子将特别有用。
如果您想从列表中计算特定区域的列表元素平均值,并用其他元素和特定区域的平均值创建一个新列表,您可以使用:
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]