Python中列表中浮点数的总和

时间:2015-07-02 14:24:10

标签: python sum nltk

我在s中有浮动值:

p = list(swn.senti_synsets(a))
s = p[0].pos_score()
print(s)

# Output
0.0
0.0
1.0
0.0
0.25
0.25

然后我尝试了,print(sum(s)) 这给出了错误' float'对象不是Iterable。 这该怎么做 ?

解决方案: 奇怪的是我自己找到了答案,我不知道但是把一个单独的功能放在了一起。 for x in token: sum_pos=sum_pos+posCheck(x) sum_neg=sum_neg+negCheck(x) def posCheck(a): p=list(swn.senti_synsets(a)) s = p[0].pos_score() return(s)

def negCheck(a): p=list(swn.senti_synsets(a)) s = p[0].neg_score() return(s)

我无法对列表进行总结,但是当我使用返回类型的函数时,它返回了正数的总和。感谢大家的帮助。

6 个答案:

答案 0 :(得分:3)

values = [0.0, 0.0, 1.0, 0.0, 0.25, 0.25]

print sum(values)

对我来说很好用

答案 1 :(得分:3)

您也可以使用:

>>> l=[0.0, 0.0, 1.0, 0.0, 0.25, 0.25]
>>> sum(map(float,l))
1.5

正如其他人所说,sum(l)也会奏效。我不知道你为什么会这样做。

一个可能的原因可能是您的列表是字符串数据类型。将其转换为浮动为:

l = map(float, l)

l = [float(i) for i in l]

然后使用sum(l)可以正常工作。

编辑:您可以将s转换为列表,然后对其求和。

s = p[0].pos_score()
print sum(list(s))

答案 2 :(得分:0)

试试这个:

它将所有pos_score()添加到列表中,然后打印总和。

p = list(swn.senti_synsets(a))
s = [x for x in p[0].pos_score()]
print(sum(s))

答案 3 :(得分:0)

这是因为在原始代码中,s不可迭代,因此您不能在非可迭代对象上使用sum。如果您要将s中的每个值添加到列表中,您可以对列表求和,以便为您提供所需的结果。

不确定函数pos_score()函数是否有效,但是您可以创建并返回该函数的列表结果吗?

答案 4 :(得分:0)

def do(*args):
    mylist_ = [float("{:.2f}".format(num)) for num in args]
    result =(sum(mylist))
    return result

print(do(23.32,45,67,54.27))

结果:

189.59

我希望这会有所帮助。

答案 5 :(得分:0)

要对列表中的float求和,一种简单的方法是使用fsum

import math

l=[0.0, 0.0, 1.0, 0.0, 0.25, 0.25]
math.fsum(l)