【问题标题】:Python formatting decimals not to be a list in a listPython格式化小数不是列表中的列表
【发布时间】:2021-08-28 15:42:29
【问题描述】:

所以我在尝试将数字格式化为保留两位小数时遇到了这个问题。虽然我知道您可以使用此代码'[%.2f'%i for i in price_data]

price1 = 1
price2 = 2
price3= 200
price4 =500
price5 =600

price_data = [price1, price2, price3, price4, price5]

my_list = [1,2,3,4,5]

gem = 'gold'

row1 = [gem, price1, price2, price3, price4, price5 ]
print(row1)
output = ['gold', 1, 2, 200, 500, 600]
row2 =[gem, ['%.2f'%i for i in price_data]]
print(row2)
output = ['gold', ['1.00', '2.00', '200.00', '500.00', '600.00']]

我想得到相同的答案,但不让输出成为列表中的列表。最后一个输出是否有任何内容,以便我在返回以下项目时得到它?

output = ['gold', '1.00', '2.00', '200.00', '500.00', '600.00']

【问题讨论】:

  • 也许row2 =[gem, *['%.2f'%i for i in price_data]]
  • 如果您得到任何答案的帮助,您能否将其中一个标记为已接受?

标签: python list for-loop format decimal


【解决方案1】:

我建议使用 f 字符串而不是旧的 % 插值:

output = [gem, *(f'{i:.2f}' for i in price_data)]

我所做的另一项更改是删除理解并改用生成器。这意味着价格数据list 不是先在内存中创建然后解包的。这是迄今为止速度最快、内存效率最高的建议。

编辑:我已经删除了我的其他建议,因为其他人的回答大致相同。

【讨论】:

    【解决方案2】:

    你可以

    • 将内部列表扁平化为外部列表

      row2 = [gem, *['%.2f' % i for i in price_data]]
      
    • 或连接列表

      row2 = [gem] + ['%.2f' % i for i in price_data]
      

    【讨论】:

    • 不幸的是,我无法将它连接起来,因为该 gem 实际上是 for 循环的一部分,但最上面的一个这样做了,谢谢!
    【解决方案3】:
    my_list = [1,2,3,4,5]
    gem = 'Gold'
    gem_l = [gem]
    
    for i in my_list:
      gem_l.append(i)
    
    print(gem_l)
    

    【讨论】:

    • 这行不通,因为你需要十进制格式
    猜你喜欢
    • 2016-08-20
    • 1970-01-01
    • 2015-01-20
    • 1970-01-01
    • 1970-01-01
    • 2016-03-22
    • 1970-01-01
    • 2016-12-26
    相关资源
    最近更新 更多