【问题标题】:How can I use sum() function for a list in Python?如何在 Python 中使用 sum() 函数作为列表?
【发布时间】: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)

【问题讨论】:

    标签: python list function sum


    【解决方案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))
              

              【讨论】:

                猜你喜欢
                • 2020-07-13
                • 1970-01-01
                • 2020-06-27
                • 2019-09-01
                • 2019-05-27
                • 2013-05-11
                • 1970-01-01
                • 2011-06-26
                • 1970-01-01
                相关资源
                最近更新 更多