我有一个包含大量整数的列表,另一个列表也包含整数(如果加在一起(,这些整数的总和等于第一个列表中的整数总数。我希望创建一个函数,在第二个列表上迭代,对于第二个名单中的每个数字,取第一个名单中值的平均值,并对第二个清单中的所有整数重复。。。制作包含期望平均值的最后三分之一列表。
例如:我的两个列表中的一小部分如下:[20, 15, 20, 30, 40, 20, 10, 8]
,[2, 3, 1, 2]
既然2是我第二个列表中的第一个数字,我想取第一个列表中前两个整数的平均值,然后取下一个3,以此类推,然后把它们加到第三个列表中。
以下是我的想法,但显然并不完整。
def mean_values(list_of_numbers, numbers_for_meanvalue):
list_of_means = []
for i in numbers_for_meanvalue:
mean = sum(list_of_numbers[0]+...+list_of_numbers[i])/numbers_for_meanvalue[i]
list_of_means.append[mean]
return list_of_means
您可以对列表进行切片:list[start : end]
。
def mean_values(list_of_numbers, numbers_for_meanvalue):
list_of_means = []
last_start = 0
for num in numbers_for_meanvalue:
mean = sum(list_of_numbers[last_start:last_start + num]) / len(list_of_numbers[last_start:last_start + num])
last_start += num
list_of_means.append[mean]
return list_of_means
如果我理解正确,我不知道,但是:
>>> a = [20, 15, 20, 30, 40, 20, 10, 8]
>>> b = [2, 3, 1, 2]
>>> n = 0
>>> for e in b:
... sl = a[n:n+e]
... print(sl,(sum(sl) / e))
... n += e
...
[20, 15] 17.5
[20, 30, 40] 30.0
[20] 20.0
[10, 8] 9.0