Python格式化列表列表中的所有值

2024-04-24 21:04:09 发布

您现在位置:Python中文网/ 问答频道 /正文

很抱歉我问了这么愚蠢的问题 但您能帮我格式化列表列表(“%.2f”)吗?例如:

a=[[1.343465432, 7.423334343], [6.967997797, 4.5522577]]

我用过:

  for x in a:
     a = ["%.2f" % i for i in x]
     print (a)

输出:

['1.34', '7.42']
['6.97', '4.55']

但是我想得到我的名单 输出:

[['1.34', '7.42'] ,['6.97', '4.55']]

Tags: in列表forprint名单
2条回答

更一般的解决方案只需要几行代码。它递归地格式化数字、列表、任何嵌套深度的列表

def fmt(data):
    if isinstance(data, list):
        return [fmt(x) for x in data]
    try:
        return "%.2f" % data
    except TypeError:
        return data


a=[[1.343465432, 7.423334343], [6.967997797, 4.5522577], [10, [20, 30]], 40] 
print(fmt(a))
# [['1.34', '7.42'], ['6.97', '4.55'], ['10.00', ['20.00', '30.00']], '40.00']

更简单的方法是,您可以使用列表理解来实现以下目标:

>>> a=[[1.343465432, 7.423334343], [6.967997797, 4.5522577]]
>>> [["%.2f" % i for i in l] for l in a]
[['1.34', '7.42'], ['6.97', '4.55']]

事实上,即使你的代码是好的。不需要打印,只需append将要打印到列表中的值

相关问题 更多 >