对齐列表元素Sagemath

时间:2012-07-10 09:34:36

标签: list formatting alignment decimal sage

我有一个包含数十万个数字的巨大列表。当由sagemath生成时,列表格式错误,但我必须以下面显示的格式将其“提供”给另一个函数。以下是格式良好的列表示例:

           C=[
           (  7.850629, 25.421135, 22.162571),
           ( 37.706629, 28.421472,  0.229876),
           ( 37.560629, 21.421809, 18.320977),
           ( 39.238629, 26.422147, 18.442572),
           ( 35.087169,  0.419785, 15.055789),
           ]

如您所见,所有元素都与右侧对齐,并且基于精度和小数位。所以我的问题是:如何将格式错误的列表(如下所示的示例)转换为上面格式化的

    B=[(37.074945, 22.414327,
9.756234), (37.074945, 22.414665,
1.669214), (37.074945, 22.415002,
8.571376), (37.074945, 22.41534,
1.294731), (37.074945, 22.415677,
5.753062), (37.074945, 22.416014,
7.519850)]

(如果我能描述它甚至更多,我会说,如果我的列表被认为是一个矩阵,那么它将有十分之几行和三列)

2 个答案:

答案 0 :(得分:0)

Sage没有内置的良好对齐功能。如果您愿意将列表视为矩阵,则可以

sage: matrix(B)
[37.0749450000000 22.4143270000000 9.75623400000000]
[37.0749450000000 22.4146650000000 1.66921400000000]
[37.0749450000000 22.4150020000000 8.57137600000000]
[37.0749450000000 22.4153400000000 1.29473100000000]
[37.0749450000000 22.4156770000000 5.75306200000000]
[37.0749450000000 22.4160140000000 7.51985000000000]

它缺少逗号和其他语法部分,但它已正确对齐。如果您愿意使用html输出,则可以执行html.table(B)。将来(参见this possible future enhancement)应该有一个很好的“表格”功能,适用于这样的漂亮显示。

答案 1 :(得分:0)

嗯,我认为这是一个普遍的Python问题。鉴于评论中的C,以下工作。 "%9.5f"是关键洞察力:

for l in C:
    print "(%s)," % ', '.join("%9.5f"%i for i in l)
   ....:     
( 37.07494,  22.41433,   9.75623),
( 37.07494,  22.41466,   1.66921),
( 37.07494,  22.41500,   8.57138),
( 37.07494,  22.41534,  18.29473),
( 37.07494,  22.41568,   5.75306),
( 37.07494,  22.41601,  17.51985),