【发布时间】:2021-06-03 03:27:20
【问题描述】:
我有以下元组列表:
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'),与(1, 'x') 中的1 相比,数字2435 非常大。任何想法将不胜感激。提前致谢。
【问题讨论】:
-
如果这真的是 Python 2,不使用
range会有所帮助。我认为您不会比这更快地做事(缺少编写可以从 Python 调用的 C 函数)。您将需要从元组中提取数字,因此某种循环(甚至是隐藏在推导式中的循环)是不可避免的。 -
无需道歉。您问题的最后一段表明您的问题不仅仅是计算平均值。如果是这样,我在下面的回答可能值得将您的数据转换为 pandas 数据框的成本。 Pandas 可以轻松实现,例如计算一些观察值的平均值(例如,在某一列中带有
'x'的观察值)。
标签: python python-3.x list