首页 > 解决方案 > 元组列表和均值计算

问题描述

我有以下元组列表:

list = [(120, 'x'), (1120, 'y'), (1330, 'x'), (0, 't'), (1, 'x'), (0, 'd'), (2435, 'x')]

我想计算所有元组的第一个分量的平均值。我做了以下事情:

s = []
for i in range(len(list)):
    a = list[0][i]
    if a =! 0:
        s.append(a)
    else:
        pass
mean = sum(s) / len(s)

它有效,但我的问题是是否有任何方法可以避免使用 for 循环?因为我有一个非常大的元组列表,并且由于时间计算,如果可能的话,我需要找到另一种方法。

根据上面所说的for循环方法。我怎么能找到关于wights的平均值?我的意思是,例如,列表中的最后一个元素是,并且与其中的元素相比(2435, 'x'),这个数字2435非常大。任何想法将不胜感激。提前致谢。(1, 'x') 1

标签: pythonpython-3.xlist

解决方案


循环是不可避免的,因为您需要按照 John 的描述至少遍历所有元素一次。

但是,您可以使用基于迭代器的方法来摆脱创建列表以节省空间:

mean = sum(elt[0] for elt in lst)/len(lst)

更新:我意识到你只需要非零元素的平均值。您可以修改方法以不将元素存储在列表中。

total = 0
counts = 0
for elt in lst:
    if elt[0]:
        total += elt[0]
        counts += 1

mean = total/counts

推荐阅读