在python中查找列表的一部分的平均值,然后修改列表



>我有这样的列表

x = [4342, 318, 262, 6827, 314, 765, 11525, 67, 654, 13]


我想取mean of 11525,67 and 654,然后把它放在11525的索引处。 所以,基本上我希望我的列表x是这样的:-

x = [4342, 318, 262, 6827, 314, 765, 4082, 13]

我知道如何取平均值,但不知道如何通过删除索引来修改列表。 这就是我到目前为止所做的

sum = 0
count = 0
for x in range(6, 9):
sum += text_index[x]
count += 1
print(sum, count)
avg = int(sum/count)
print(avg)

现在,我应该如何编辑我的列表以获得所需的输出?

targets = []
for i in range(6,9):
targets.append(text_index.pop(i))  # use pop to remove the item and return it
sum = sum(text_index)  # Use sum() on an iterable to sum each item
avg = sum/len(targets)  # Calculate the mean using the len

你可以简单地使用del x[7:9]. 这是一个简单的函数,可能会满足您的需求:

def replace_by_mean(x):
avg = sum(x[6:9]) // len(x[6:9])
x[6] = avg
del x[7:9]

您可以使用列表切片,然后重新组合列表。

x = x[0:6] + [sum(x[6:9])/3, x[-1]]

简单的方法,试试这个:

import numpy as np
x = [4342, 318, 262, 6827, 314, 765, 11525, 67, 654, 13]
y = x[6:9]
del(x[6:9])
av = np.mean(y)
x.insert(len(x)-1, int(av))
print(x)

输出:

[4342, 318, 262, 6827, 314, 765, 4082, 13]

您可以使用列表切片和串联来做到这一点。例如:

text_index = [4342, 318, 262, 6827, 314, 765, 11525, 67, 654, 13]
sum = 0
count = 0
start, stop = 6, 9
for x in range(start, stop):
sum += text_index[x]
count += 1
print(sum, count)
avg = int(sum/count)
text_index = text_index[:start] + [avg] + text_index[stop:]
print(text_index)

最新更新