如何在 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() 函数作为列表?的主要内容,如果未能解决你的问题,请参考以下文章