python - 元组列表和均值计算
问题描述
我有以下元组列表:
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
解决方案
循环是不可避免的,因为您需要按照 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
推荐阅读
- java - 是否有在 zookeeper 中存储大罐子(1-5M)的用例?
- c# - Mono C# 中的 wss WebSocket 服务器:SslStream 不给我数据,但 Stream 给我
- linux - BASH getopts 具有相同选项的多个脚本
- xcode - 我无法使用 Mojave 10.14 安装 gcc
- laravel - 安装 laravel-scout-elastic 的版本出错
- node.js - node-red 中的全局上下文,用于存储 http req 和 res 对象
- scala - Spark:展平简单的多列 DataFrame
- c - C中Union Struct的动态数据结构
- sql - 从视图或表格中选择有区别吗?
- javascript - 使用 VueJs 绑定内联动态 css 类名