根据列表中的最大长度用零填充浮点数
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']
我有一个列表:
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']