有没有更好的方法来做到这一点?Python:从列表中提取浮动的优雅方式?
我有形式的“双重”的文章:
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
1.检查这个'从随机导入随机;列表(chain(* chain(* [[[[random()] [in range(2)] for y in range(3)] for z in range(4)]))))''你可以尝试更深的嵌套,你会看到它工作正常。 2.转换为字符串不能解决问题,并且输出的结果与@dcnicholls不同。如果fp表达式确实是一个问题,那么可以使用'decimal.Decimal' 3.通常不鼓励使用'isinstance'。 'hasattr(i,“__iter __”)'可能是更好的解决方案。 – zero323
您在评论中提到的建议非常复杂且难以理解,** chain()**方法在另一个中被称为一个,如果您不知道嵌套级别,该怎么办? –
恕我直言,嵌套功能没有任何复杂的,但它可能是品味的问题。关于不知道嵌套。在这个问题的背景下,它并不重要,因为格式是固定的。但一般来说递归在这种情况下可能是危险的。没有提到这比'chain'慢得多。尝试运行这个:'从随机导入randint; foo = [[[[randint(1,10)] for x in range(1)] for y in range(1000)] for z in range(1000)]; %timeit list(chain(* chain(* chain(* foo)))); %timeit list(flatten(foo))'你会看到。 – zero323