只取出整数求和并创建一个普通的python

时间:2013-06-04 02:32:52

标签: python list sum average

我打印的功能输出是

average = ['2.06556473829 is the average for a', 
           '1.48154269972 is the average for b', 
           '1.56749311295 is the average for c',
           '2.29421487603 is the average for d', 
           '1.51074380165 is the average for e', 
           '1.46997245179 is the average for f', 
           '1.15950413223 is the average for g', 
           '1.94159779614 is the average for h', 
           '1.48236914601 is the rainfall average for i',
           '1.2914600551 is the average for j']

我想要做的只是列出清单中的所有数字,即2.06555,1.222等等。 将它们相加,然后将总和除以列表中的项目数并打印结果

目前我有一个总变量

total= sum(int(average))/len(average)
print total 

但是我的代码似乎不允许我挑选所有整数并总结它们。无论如何,我只能选出整数来求它们然后得到平均值吗?

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

>>> average = ['2.06556473829 is the average for a', '1.48154269972 is the average for b', '1.56749311295 is the average for c', '2.29421487603 is the average for d', '1.51074380165 is the average for e', '1.46997245179 is the average for f', '1.15950413223 is the average for g', '1.94159779614 is the average for h', '1.48236914601 is the rainfall average for i', '1.2914600551 is the average for j']
>>> avgs = [float(x.split()[0]) for x in average]
>>> sum(avgs)/len(avgs)
1.626446280991

要获得列表中数字的int值的平均值:

>>> avgs = [ int(float(x.split()[0])) for x in average]
>>> sum(avgs)/float(len(avgs))
1.2

您也可以使用regex来获取整数:

>>> import re
>>> [ int(re.search(r'\d+',x).group(0)) for x in average]
[2, 1, 1, 2, 1, 1, 1, 1, 1, 1]