如何在保留structu的同时遍历列表

2024-04-19 20:57:03 发布

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

我试图创建一个简单的函数来重新格式化列表中的项目,然后打印它们

这对于一个列表来说非常简单:

my_list = [1/3,7/11,2/5] #generate list of floats
formatted_list = ['%.2f' % elem for elem in my_list] #format to 2 d.p
print(formatted_list) #print re-formatted list

但是我有一个嵌套列表的列表。要遍历其中的每一项,我需要执行类似于this answer的操作。这样我就可以写了

^{pr2}$

然而,这种方法的主要缺点是,它不再保留结构(列表中的元组)。在

即:

print(formatted_list)

退货

0.33, 0.25, 0.2, 0.66, 0.5, 0.4, 1.0
#I want (0.33, 0.25, 0.2), (0.66, 0.5, 0.4), 1.0

是否有一种方法可以重新格式化,或者更普遍地迭代任意深度嵌套列表中的项,以返回与原始列表结构相同的列表?


Tags: of项目方法函数in列表formy
2条回答

也许一个嵌套的理解帮助

formatted =  [tuple(['%.2f' % j for j in elem]) if isinstance(elem,tuple) else '%.2f' % elem for elem in my_list ]

它支持列表/元组/浮点集合的任意嵌套。在

def myformat(x):
    return '%.2f' % x if isinstance(x, float) else type(x)(map(myformat, x))

演示:

^{pr2}$

也适用于其他类型数字的替代实现:

def myformat(x):
    try:
        return type(x)(map(myformat, x))
    except:
        return '%.2f' % x

或者,原始版本可以使用isinstance(x, numbers.Number)。在

相关问题 更多 >