繁体   English   中英

如何在列表[python]中查找某些数字的平均值

[英]How to find average of some number in list [python]

如果我有

 a=[1,2,3,4,5]
 b=[1,2,3,4,5]
 c=[1,2,3,4,5]

我想在阵列位置0,1,2找到a,b,c的平均值,输出将像1+2+3+1+2+3+1+2+3/9我怎么能这样做在循环?

假设索引是连续的:您可以迭代列表,获取前三个元素的切片,并进行sum

In [1083]: a=[1,2,3,4,5]
      ...: b=[1,2,3,4,5]
      ...: c=[1,2,3,4,5]
      ...: 

In [1084]: sum(sum(i[:3]) for i in [a, b, c]) / 9
Out[1084]: 2.0

或使用itertools.islice zip

In [1085]: sum(sum(i) for i in itertools.islice(zip(a, b, c), 3)) / 9
Out[1085]: 2.0

来自变量的值:

In [1086]: lists = [a, b, c]

In [1087]: indexes = 3

In [1088]: sum(sum(i[:indexes]) for i in lists) / (len(lists) * indexes)
Out[1088]: 2.0

In [1089]: sum(sum(i) for i in itertools.islice(zip(*lists), indexes)) / (len(lists) * indexes)
Out[1089]: 2.0

还有其他方法,但如果你不反对numpy ,那很简单,你可以避免显式循环:

import numpy as np

np.mean(np.stack((a,b,c))[:,:3])

哪个返回2.0

上面说的是:将所有数值的平均值放在所有数组的第3位

如果你想要一个显式循环,你可以这样做:

my_list = []
for l in [a,b,c]:
    my_list.extend(l[:3])

sum(my_list) / len(my_list)

哪个也返回2.0

您可以使用列表推导和内置函数,因此您不必导入任何内容。

lists = [a, b, c]
index = 3

mean = sum([(sum(item[:index])) for item in lists])/float(index*len(lists))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM