列表中所有值的平均值 - 有更多'Pythonic'方法吗?

时间:2014-01-30 01:26:22

标签: python python-3.x

所以我正在按照初学者的Python指南进行练习:

  

创建一个包含0到1000之间100个随机整数的列表(使用   迭代,追加和随机模块)。写一个叫做的函数   average将列表作为参数并返回平均值。

我在几分钟内就轻松解决了问题,但是chapter还提到了几种遍历列表的方法,并为列表和变量分配了多个值,我不确定我是否完全理解,所以我不知道我知道是否可以用更少的线来做到这一点。这是我的答案:

import random

def createRandList():
    newlist = []
    for i in range(100):
        newint = random.randrange(0,1001)
        newlist.append(newint)
    return newlist

def average(aList):
    totalitems = 0
    totalvalue = 0
    for item in aList:
        intitem = int(item)
        totalitems = totalitems + 1
        totalvalue = totalvalue + intitem
    averagevalue = totalvalue/totalitems
    return averagevalue

myList = createRandList()
listAverage = average(myList)

print(myList)
print(listAverage)

提前致谢!

2 个答案:

答案 0 :(得分:9)

使用Python的内置sumlen函数:

print(sum(myList)/len(myList))

答案 1 :(得分:1)

我同意上述有关使用sum的建议。

虽然我不喜欢使用列表理解来运行固定数量的迭代,但您的createRandList函数体可能只是:

return [random.randint(0,1000) for i in range(100)]

(另外,我发现randint更具可读性,因为“停止”值是您想要的值,而不是您想要的值+ 1.)

在任何情况下,您都可以省略在数字上调用int()的行 - randrange的输出已经是int。