Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何计算列表中索引值的总和和平均值?_Python_Python 2.7 - Fatal编程技术网

Python 如何计算列表中索引值的总和和平均值?

Python 如何计算列表中索引值的总和和平均值?,python,python-2.7,Python,Python 2.7,列表B在索引位置展开,其中列表A具有相邻的匹配值,使用 因此,结果列表是: B_update1 = [0,4,10,10,15,15] 经过一些中间步骤后,将: B_update2 = [0,4,12,10,20,20] 现在我想取重复值的总和和平均值,它将返回给我: B_mean = [0,4,11,20] B_sum = [0,4,22,40] 我不知道怎么做。有什么建议吗 B_update1, B_update2, B_mean, B_sum = [0,4,10,10,15,15],

列表B在索引位置展开,其中列表A具有相邻的匹配值,使用

因此,结果列表是:

B_update1 = [0,4,10,10,15,15]
经过一些中间步骤后,将:

B_update2 = [0,4,12,10,20,20]
现在我想取重复值的总和和平均值,它将返回给我:

B_mean = [0,4,11,20]
B_sum = [0,4,22,40]
我不知道怎么做。有什么建议吗

B_update1, B_update2, B_mean, B_sum = [0,4,10,10,15,15], [0,4,12,10,20,20], [],[]
from itertools import groupby
from operator import itemgetter
for num, grp in groupby(enumerate(B_update1), itemgetter(1)):
    tmp_list = [B_update2[idx] for idx, _ in grp]
    B_mean.append(sum(tmp_list)/len(tmp_list))
    B_sum.append(sum(tmp_list))
print B_mean, B_sum
输出

[0, 4, 11, 20] [0, 4, 22, 40]

您需要的基本信息是重复次数:

>>> A = [476, 1440, 3060, 3060, 500, 500]
>>> B = [0, 4, 10, 15]
>>> repetitions = [len(list(g)) for n, g in groupby(A)]
>>> repetitions
[1, 1, 2, 2]
由此,您可以构造
B_update1
并返回到简单列表:

>>> B_update1 = []
>>> for i, r in enumerate(repetitions):
        B_update1.extend([B[i]] * r)
>>> B_update1
[0, 4, 10, 10, 15, 15]

>>> B_update2 = [0, 4, 12, 10, 20, 20] # MAGIC

>>> B_sum, B_mean = [], []
>>> i = 0
>>> for r in repetitions:
        s = sum(B_update2[i:i + r])
        B_sum.append(s)
        B_mean.append(s / r)
        i += r

>>> B_sum
[0, 4, 22, 40]
>>> B_mean
[0.0, 4.0, 11.0, 20.0]

重复值的平均值不总是原始值吗?它们会在原始列表中保持不变,但在新列表中会被更改吗?请解释一下。你能展示一下你是如何从
A
B
创建
B\u更新的
的吗
>>> B_update1 = []
>>> for i, r in enumerate(repetitions):
        B_update1.extend([B[i]] * r)
>>> B_update1
[0, 4, 10, 10, 15, 15]

>>> B_update2 = [0, 4, 12, 10, 20, 20] # MAGIC

>>> B_sum, B_mean = [], []
>>> i = 0
>>> for r in repetitions:
        s = sum(B_update2[i:i + r])
        B_sum.append(s)
        B_mean.append(s / r)
        i += r

>>> B_sum
[0, 4, 22, 40]
>>> B_mean
[0.0, 4.0, 11.0, 20.0]