如何在Python中使用sum()函数列表?

时间:2012-03-17 01:38:13

标签: python list function sum

我正在做我的作业,它要求我使用sum()和len()函数来查找输入数字列表的平均值,当我尝试使用sum()来获取列表的总和时,我得到错误TypeError:+:' int'不支持的操作数类型和' str'。以下是我的代码:

numlist = input("Enter a list of number separated by commas: ")

numlist = numlist.split(",")

s = sum(numlist)
l = len(numlist)
m = float(s/l)
print("mean:",m)

7 个答案:

答案 0 :(得分:13)

问题是,当您从输入中读取时,您有一个字符串列表。你可以做第二行这样的事情:

numlist = [float(x) for x in numlist]

答案 1 :(得分:10)

问题是你有一个字符串列表。在计算总和之前,需要将它们转换为整数。例如:

numlist = numlist.split(",")
numlist = map(int, numlist)
s = sum(numlist)
...

答案 2 :(得分:4)

您正在添加字符串,而不是数字,这是您的错误消息所说的内容。

将每个字符串转换为各自的整数:

numlist = map(int, numlist)

然后取平均值(注意我使用float()的方式与你不同):

arithmetic_mean = float(sum(numlist)) / len(numlist)

您希望在分割之前使用float()float(1/2) = float(0) = 0.0,这不是您想要的。

另一种方法是首先将它们全部float

numlist = map(float, numlist)

答案 3 :(得分:0)

Split会返回一个字符串数组,因此在使用sum函数之前需要将它们转换为整数。

答案 4 :(得分:0)

你可以试试这个。

reduce(lambda x,y:x+y, [float(x) for x in distance])

答案 5 :(得分:0)

将字符串输入转换为浮点值列表。这是更新的代码。

numlist = list(map(int,input("Enter a list of number separated by commas: ").split(',')))
l = len(numlist)
s = sum(numlist)
print("mean :",s/l)

答案 6 :(得分:0)

对于Python 2.7

from pyral import Rally

SERVER = 'SERVER'
USER = 'USER'
PASSWORD = 'PASSWORD'
WORKSPACE = 'WORKSPACE'
PROJECT = 'PROJECT'
TARGET_FEATURES = ['F123']
TARGET_USEREMAIL = "123@gmail.com"

if __name__ == '__main__':
    rally = Rally(SERVER, USER, PASSWORD, workspace=WORKSPACE, project=PROJECT)

    user_req = rally.get('User', fetch=True, query='EmailAddress = "%s"' % TARGET_USEREMAIL)
    user = us_req.next()

    for feature in TARGET_FEATURES:
        f_req = rally.get('Feature', fetch=True, query='FormattedID = %s' % feature)
        f = f_req.next()

        feature_update = {
                "ObjectID": f.oid,
                "User": user.ref
        }

        try:
            update_feature = rally.update('Feature', feature_update)
            print "=> %s has been updated." % (f.FormattedID)
        except:
            print "=> Failed to update %s." % (f.FormattedID)