我正在尝试添加列表的所有元素并找到它的平均值。
[[0.7,5,6,4,2,45,7,8,5,3,2,6,8,3,2,2,5,4]]
我找到平均值的代码是:
avg = sum(lst)/len(lst)
错误:
TypeError:+:' int'不支持的操作数类型和'列出'
我认为这是因为它是一个列表列表,但我不想改变列表的输出,因为这个输出花了我近100行编码。 如何在不损坏代码的情况下添加所有这些元素? LNG - PYTHON
答案 0 :(得分:2)
应为avg = sum(lst[0])/len(lst[0])
答案 1 :(得分:2)
尝试使用pop:
list = [[1,2,3,4,5]]
innerList = list.pop()
avg = sum( innerList ) / len ( innerList )
print avg
结果:
3
答案 2 :(得分:1)
你可以用numpy做到这一点。
In [1]: import numpy as np
In [2]: lst = [[0.7,5,6,4,2,45,7,8,5,3,2,6,8,3,2,2,5,4]]
In [3]: np.mean(lst[0])
Out[3]: 6.5388888888888888
答案 3 :(得分:0)
首先,如果你想在python2.x和3.x中使分割具有相同的行为,我建议你导入division
。
>>> from __future__ import division
你猜的原因是嵌套列表,是的,这就是原因。所以,解决方案很简单,我们使用内部列表:
>>> lst = [[0.7,5,6,4,2,45,7,8,5,3,2,6,8,3,2,2,5,4]]
>>> average = sum(lst[0]) / len(lst[0])
>>> average
6.538888888888889
如果您使用的是python 3.4或更高版本,则std lib具有电池:statistics.mean
>>> from statistics import mean
>>> mean(lst[0])
6.538888888888889