You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python实现按5列换行规则格式化输出二维数组到文本文件

实现逻辑

核心规则完全匹配需求,无额外小众第三方依赖:

  • 逐行遍历输入二维数组,按每5个元素为一个切片做折行拆分,支持任意列数的输入数组,最后一组不足5列时正常输出
  • 每个原始数组行的第一个切片块前加row= 行号前缀,后续折行的切片块前填充等长空格做对齐,不重复显示行号
  • 科学计数法精度、单值列宽、输出路径都可通过参数灵活调整,既支持直接打印控制台,也支持写入文本文件,兼容原生Python列表和NumPy数组输入
完整可运行代码
def print_2d_array(arr, col_per_line=5, val_width=12, sci_format=".2E", output_path=None):
    """
    按指定规则格式化输出二维数组
    :param arr: 输入二维数组,支持原生list、numpy数组格式
    :param col_per_line: 单行最多展示的元素个数,默认5即需求指定的折行规则
    :param val_width: 单个数值列的占位宽度,可按需调整
    :param sci_format: 科学计数法格式,默认.2E对应2位小数,需高精度时可改为.18E等格式
    :param output_path: 文本文件输出路径,传None则直接打印到控制台
    """
    # 计算前缀占位长度,保证折行后续行和首行对齐
    prefix_len = len(f"row=    1   ")
    res_lines = []
    for row_idx, row in enumerate(arr, start=1):
        # 按指定列数拆分当前行的元素为多个块
        chunks = [row[i:i+col_per_line] for i in range(0, len(row), col_per_line)]
        for chunk_idx, chunk in enumerate(chunks):
            # 首块带行号前缀,后续块补空格对齐
            if chunk_idx == 0:
                line_prefix = f"row={row_idx:>5d}   "
            else:
                line_prefix = " " * prefix_len
            # 格式化当前块所有数值
            val_strs = [f"{val:{sci_format}}".ljust(val_width) for val in chunk]
            line = line_prefix + "".join(val_strs).rstrip()
            res_lines.append(line)
    full_content = "\n".join(res_lines)
    # 输出到文件或控制台
    if output_path:
        with open(output_path, "w", encoding="utf-8") as f:
            f.write(full_content)
    else:
        print(full_content)

# 测试调用
if __name__ == "__main__":
    a = [[100.0, 200.0, 300.0, 400.0, 500.0, 600.0],
         [700.0, 800.0, 900.0, 1000.0, 1100.0, 1200.0],
         [1300.0, 1400.0, 1500.0, 1600.0, 1700.0, 1800.0]]
    # 控制台打印测试
    print_2d_array(a)
    # 需要输出到文本文件时,传入output_path参数即可
    # print_2d_array(a, output_path="result.txt")
效果说明
  • 默认参数运行测试用例时,输出完全匹配指定格式:
row=    1   1.00E+02    2.00E+02    3.00E+02    4.00E+02    5.00E+02
            6.00E+02
row=    2   7.00E+02    8.00E+02    9.00E+02    1.00E+03    1.10E+03
            1.20E+03
row=    3   1.30E+03    1.40E+03    1.50E+03    1.60E+03    1.70E+03
            1.80E+03
  • 需要高精度长格式科学计数法输出时,仅需修改sci_format参数即可,例如传入.18E即可输出18位小数的科学计数法结果,和需求中给出的可接受格式完全一致。
  • 支持任意列数的输入数组,单行14个元素时会自动拆为3行展示,无需额外修改逻辑。

内容的提问来源于stack exchange,提问作者MathX

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 18:39:34