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

Posted

技术标签:

【中文标题】如何在 Python 中使用 sum() 函数作为列表?【英文标题】:How can I use sum() function for a list in Python? 【发布时间】:2012-04-02 13:01:10 【问题描述】:

我正在做作业,它要求我使用 sum() 和 len() 函数来查找输入数字列表的平均值,当我尝试使用 sum() 来获取列表的总和时,我收到错误类型错误:+ 的不支持的操作数类型:'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)

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

【参考方案2】:

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

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

【讨论】:

【参考方案3】:

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

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

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)

【讨论】:

除非 OP 在 Py3 中,否则默认为真除法。 嗯,也可能是这样。【参考方案4】:

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

【讨论】:

【参考方案5】:

你可以试试这个。

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

【讨论】:

【参考方案6】:

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

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

【讨论】:

【参考方案7】:

对于 Python 2.7

numlist = map(int,raw_input().split(","))
s = sum(numlist)
l = len(numlist)
m = float(s/l)
print("mean:"+ str(m))

【讨论】:

以上是关于如何在 Python 中使用 sum() 函数作为列表?的主要内容,如果未能解决你的问题,请参考以下文章

python数组求和

python之列表作为函数的参数

如何在python的数组中只添加奇数?

python3函数

python 之返回函数

python:返回函数,闭包