簡體   English   中英

在混合類型的嵌套元組中打印格式化的浮點數

[英]Printing formatted floats in nested tuple of mixed type

我有一個元組列表,其中元組中的條目是混合類型(int、float、tuple),並且想要在一行上打印列表的每個元素。

示例列表:

 [('520',
     (0.26699505214910974, 9.530913611077067e-22, 1431,
     (0.21819421133984918, 0.31446394340528838), 11981481)),
 ('1219',
     (0.2775519783082116, 2.0226340976042765e-25, 1431,
     (0.22902629625165472, 0.32470159534237308), 14905481))]

我想將每個元組打印為一行,並將浮點數格式化為打印到第 10000 個位置:

 [('520', (0.2669, 9.5309e-22, 1431, (0.2181, 0.3144), 11981481)),
 ('1219', (0.2775, 2.0226e-25, 1431, (0.2290, 0.3247), 14905481))]

我正在使用pprint將所有內容都放在一行上

pprint(myList, depth=3, compact=True)
> ('1219', (0.2775519783082116, 2.0226340976042765e-25, 1431, (...), 14905481))]

但我不確定如何以 Pythonic 的方式正確格式化浮點數。 (必須有比循環遍歷列表更好的方法,循環遍歷每個元組,檢查 if-float/if-int/if-tuple 並通過"%6.4f" % x轉換所有浮點數)。

這不是您真正需要的,但非常接近,並且代碼非常緊湊。

def truncateFloat(data):
    return tuple( ["{0:.4}".format(x) if isinstance(x,float) else (x if not isinstance(x,tuple) else truncateFloat(x)) for x in data])
pprint(truncateFloat(the_list))

對於您的示例,結果是

(('520', ('0.267', '9.531e-22', 1431, ('0.2182', '0.3145'), 11981481)),
 ('1219', ('0.2776', '2.023e-25', 1431, ('0.229', '0.3247'), 14905481)))

你可以使用.format()選項來獲得你想要的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM