Python格式化小数不是列表中的列表



所以我遇到这个问题时,试图格式化数字有两个小数点。虽然我知道你可以使用这个代码'[%.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']

我建议使用f-string代替旧的%插值:

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

我所做的另一个更改是删除了推导式并使用生成器代替。这意味着价格数据list不会首先在内存中创建,然后再解压缩。这是目前为止最快,最节省内存的建议。

编辑:我已经删除了我的其他建议,因为其他人几乎在同一时间回答了相同的答案。

你可以

  • 将内部列表平铺到外部列表

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

    row2 = [gem] + ['%.2f' % i for i in price_data]
    
my_list = [1,2,3,4,5]
gem = 'Gold'
gem_l = [gem]
for i in my_list:
gem_l.append(i)
print(gem_l)

最新更新