0

有没有更优雅的方法来做到这一点?

我有一个表格的“双重”列表:

rlist = [([-0.5753647], [1.3716470]), ([-0.57536478], [0.75418190]), ([-1.37632438], [0.57068748])]

我想从中提取格式化的单个浮点数。

目前我正在使用:

first_number = round(float(str(rlist[0][0]).strip('[]')),4)

例如,获取第一个数字。这个比较难看。有没有更简洁的方法(在 Python 中)?

DN

4

2 回答 2

2

你可以尝试这样的事情:

from itertools import chain
[round(x, 4) for x in chain(*chain(*rlist))]

itertools.chain可用于展平嵌套的迭代。之后,您可以使用列表推导并round获得具有所需精度的数字列表。

于 2013-10-22T04:23:47.880 回答
1

如果您选择itertools.chain(),如果嵌套级别更多please see the comments below this answer@zero323

而且 round() 也有一些限制,

f = -0.5753647

print f

-0.57536469999999995

print round(f, 4)

-0.57540000000000002

所以,

rlist = [([-0.5753647], [1.3716470]),
     ([-0.57536478], [0.75418190]),
     ([-1.37632438], [0.57068748])]

def flatten(container):

    for i in container:
        if isinstance(i, list) or isinstance(i, tuple):
            for j in flatten(i):
                yield j
        else:
            yield i

print ["{0:.4f}".format(ele) for ele in list(flatten(rlist))]
于 2013-10-22T06:56:04.710 回答