有更优雅的方法吗?
我有一个表格的“双重”列表:
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
答案 0 :(得分:2)
您可以尝试这样的事情:
from itertools import chain
[round(x, 4) for x in chain(*chain(*rlist))]
itertools.chain
可用于展平嵌套的iterables。之后,您可以使用列表推导和round
来获取具有所需精度的数字列表。
答案 1 :(得分:1)
如果您选择itertools.chain()
,那么@ zero323的嵌套级别是please see the comments below this answer
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))]