【问题标题】:Sum of float numbers in a list in PythonPython中列表中浮点数的总和
【发布时间】:2015-07-02 14:24:10
【问题描述】:

我在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)) 这给出了错误“浮动”对象不是可迭代的。 这该怎么做 ?

解决方案: 奇怪的是我自己找到了答案,我不知道,但把一个单独的函数放在一边是有效的。 `

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)

我无法对列表求和,但是当我将函数放入 returntype 时,它​​返回了正数的总和。感谢大家的帮助。

【问题讨论】:

    标签: python sum nltk


    【解决方案1】:

    你也可以使用:

    >>> 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))
    

    【讨论】:

    • @SwarupRajbhandari 尝试将列表转换为浮点数据类型为print sum(map(float,list(s)))
    【解决方案2】:
    values = [0.0, 0.0, 1.0, 0.0, 0.25, 0.25]
    
    print sum(values)
    

    适合我

    【讨论】:

    • 不是这个,值没有存储在数组中。
    【解决方案3】:

    要从列表中对浮点数求和,一种简单的方法是使用 fsum

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

    【讨论】:

    • 对于一长串浮点数,仅math.fsum 确保结果的浮点舍入误差最小。
    【解决方案4】:

    试试这个:

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

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

    【讨论】:

    • 这打印了相应的正值总和。 0.5 0.375 1.125 0.0 0.25 0.25 2.125 0.125
    • 我只想要0位置单词的正数之和。
    • @SwarupRajbhandari 现在怎么样。修改了代码。
    • 我感觉这是不可能的,它没用,同样的老问题,'float' object not iterable
    • 那么看来p[0]中只有1个pos_score()
    【解决方案5】:

    这是因为在您的原始代码中,s 不可迭代,因此您不能在不可迭代的对象上使用 sum。如果您要将 s 中的每个值添加到列表中,您可以对列表进行求和以获得您正在寻找的结果。

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

    【讨论】:

      【解决方案6】:
      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
      

      我希望这会有所帮助。

      【讨论】:

        猜你喜欢
        • 2012-08-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-15
        相关资源
        最近更新 更多