【问题标题】:How to round all elements of a list using a list comprehension?如何使用列表推导对列表的所有元素进行舍入?
【发布时间】:2021-09-30 00:18:33
【问题描述】:

考虑以下浮点值列表

aList = ['3.32', '1.08', '4.23']

如何使用列表推导对其进行舍入并获得以下[3.0, 1.0, 4.0]

【问题讨论】:

    标签: python list floating-point list-comprehension rounding


    【解决方案1】:

    使用内置函数 int() 非常简单。

    aList = [3.32, 1.08, 4.23]
    newList = []
    for num in aList:
        newList.append(int(num))
    print(newList)
    

    注意:您列表中的那些元素不是浮点数,而是字符串。

    【讨论】:

      【解决方案2】:

      我假设 aList 应该是 ['3.32', '1.08', '4.23'](最后缺少引号)。

      您可以将字符串转换为浮点数,然后以 0 位精度四舍五入,如下所示:

      newList = [round(float(n), 0) for n in aList]
      

      结果:

      [3.0, 1.0, 4.0]
      

      【讨论】:

        【解决方案3】:
        input_list = [3.32, 1.08, 4.23]
        output_list = [round(x) for x in input_list]
        

        【讨论】:

          【解决方案4】:

          首先,你提到的aList

          aList = ['3.32', '1.08', '4.23']
          

          是字符串列表,而不是浮点数。

          for i in aList:
              print(type(i))
          
          [Out]: <class 'str'>
                 <class 'str'>
                 <class 'str'>
          

          浮点数列表如下

          aList = [3.32, 1.08, 4.23]
          
          for i in aList:
              print(type(i))
          
          [Out]: <class 'float'>
                 <class 'float'>
                 <class 'float'>
          

          假设一个人拥有上述列表之一,则可以使用round()float()(这将从数字或字符串返回一个浮点数——因此它适用于上述两种情况),和一个列表推导,如下

          round_0 = [round(float(number), 0) for number in aList]
          
          [Out]: [3.0, 1.0, 4.0]
          

          对于浮动列表,也可以执行以下操作

          aList = [3.32, 1.08, 4.23]
          
          round_0 = [round(number, 0) for number in aList]
          

          可能相关的替代案例

          如果要四舍五入到小数点

          round_1 = [round(float(number), 1) for number in aList]
          
          [Out]: [3.3, 1.1, 4.2]
          

          假设一个人只想要[3, 1, 4],下面就可以了

          round0 = [round(float(number)) for number in aList]
          
          [Out]: [3, 1, 4]
          

          如果有一个包含大数字的列表并且想要在小数点左侧四舍五入,以下将完成工作

          testlist = [98789.55, 38597.89, 65874.58]
          
          round_2 = [round(float(number), -2) for number in testlist]
          
          [Out]: [98800.0, 38600.0, 65900.0]
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2012-09-15
            • 2018-08-15
            • 2020-05-07
            • 1970-01-01
            • 2014-03-31
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多