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

如何在Python中让数独棋盘嵌套列表的每个子列表单独换行打印

解决数独棋盘嵌套列表的换行打印问题

基础方案:逐个打印子列表

最简单的方式就是遍历棋盘的每一行(子列表),单独打印每一行:

board = [
 [0, 0, 0, 0, 0, 0, 0, 0, 0],
 [0, 2, 0, 0, 0, 0, 0, 0, 2],
 [0, 0, 0, 3, 0, 3, 0, 0, 0],
 [0, 0, 5, 0, 0, 0, 0, 0, 0],
 [0, 8, 0, 0, 0, 6, 0, 5, 0],
 [0, 0, 0, 0, 0, 0, 0, 0, 0],
 [0, 0, 0, 2, 0, 0, 0, 0, 0],
 [0, 0, 0, 0, 0, 0, 0, 9, 0],
 [0, 0, 0, 1, 0, 0, 0, 0, 0]
]

# 遍历每行打印
for row in board:
    print(row)

这样每个子列表会单独占一行,输出结构和你定义棋盘的格式一致。

简洁方案:用字符串拼接实现换行

如果不想写循环,可以把每个子列表转成字符串后用换行符连接,一次性打印:

print('\n'.join(map(str, board)))

map(str, board)会把每个子列表转换成字符串,'\n'.join()用换行符把这些字符串连起来,打印时自然每行一个子列表。

进阶方案:打印成标准数独格式

如果想让输出更像真实的数独棋盘,还可以添加分隔线和对齐格式,区分3x3的区块:

def print_sudoku(board):
    for i, row in enumerate(board):
        # 每3行打印一条分隔线(第一行不打印)
        if i % 3 == 0 and i != 0:
            print('- ' * 11)
        # 处理每行的数字,每3个数字加一个竖线分隔
        formatted_row = []
        for j, num in enumerate(row):
            if j % 3 == 0 and j != 0:
                formatted_row.append('|')
            formatted_row.append(str(num))
        print(' '.join(formatted_row))

print_sudoku(board)

这个方法的输出会更直观,示例效果:

0 0 0 | 0 0 0 | 0 0 0
0 2 0 | 0 0 0 | 0 0 2
0 0 0 | 3 0 3 | 0 0 0
- - - - - - - - - - - 
0 0 5 | 0 0 0 | 0 0 0
0 8 0 | 0 0 6 | 0 5 0
0 0 0 | 0 0 0 | 0 0 0
- - - - - - - - - - - 
0 0 0 | 2 0 0 | 0 0 0
0 0 0 | 0 0 0 | 0 9 0
0 0 0 | 1 0 0 | 0 0 0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 19:51:07