根据列表中的最大长度用零填充浮点数

Pad float with zeros according to maximum length in list

我有一个列表:

ls = [1.0, 2.11, 3.981329, -15.11]

我想向每个元素的小数位添加零,以便所有值的长度与具有最大长度的值的长度相同。所以输出应该是:

[1.000000, 2.110000, 3.981329, -15.110000]

我该怎么做?

您可以轻松输出到想要的小数位数,

print("["+", ".join(f"{el:.8f}" for el in ls)+"]")

使用 f-strings.

获得最大可见小数位数的价值是您可能需要仔细考虑的事情 - 为什么要在这样的模拟原始输出中这样做并不明显。你可以通过字符串分析得到一个合适的数字,但它并不漂亮。

dp = 0
for el in ls:
    op = str(el)
    if "." in op:
        dpi = len(op)-1 - op.find(".")
        if dpi > dp: dp = dpi
print("["+", ".join(f"{el:.{dp}f}" for el in ls)+"]")

这是一个替代解决方案。请注意,nums 将是字符串:

ls = [1.0, 2.11, 3.981329, -15.11]

dps = lambda x: len(x) - x.index(".") - 1

max_dp = max([dps(str(i)) for i in ls])

new_ls = [f"%.{max_dp}f"%i for i in ls]

print(new_ls)

输出:

['1.000000', '2.110000', '3.981329', '-15.110000']