>我有这样的列表
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)