Python 如何在特定字符限制后打印新行

Python 如何在特定字符限制后打印新行,python,Python,我正在尝试制作一个6列7行的迷你连接4板 我正在寻找这样的输出: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 依此类推到42 我正试图把这列在一个清单上。我像这样沿着正确的轨道起步 board = [] for i in range (1,43): board.append(i) 我知道我需要的所有数字都在那里,但我不知道如何分解列表,以便它像我展示的示例那样每6个

我正在尝试制作一个6列7行的迷你连接4板

我正在寻找这样的输出:

1 2 3 4 5 6 
7 8 9 10 11 12
13 14 15 16 17 18
19 20 21 22 23 24
25 26 27 28 29 30
依此类推到42

我正试图把这列在一个清单上。我像这样沿着正确的轨道起步

board = []
for i in range (1,43):
    board.append(i)

我知道我需要的所有数字都在那里,但我不知道如何分解列表,以便它像我展示的示例那样每6个数字打印一行新行。

你在找二维板吗?如果是这样,您可以使用列表理解:

board = [[6*j+i for i in range(1,7)] for j in range(7)]
并按如下方式打印内容(使用python3):


你是在找一块二维板吗?如果是这样,您可以使用列表理解:

board = [[6*j+i for i in range(1,7)] for j in range(7)]
并按如下方式打印内容(使用python3):


为了使你的电路板看起来漂亮而不仅仅是正确,你还需要一些格式

您可以使用以下方法获得这两种结果:

board = []
for i in range(1,43):
    board.append(i)
    print('{:>4}'.format(i), end='')
    if i % 6 == 0:
        print()

 #  1   2   3   4   5   6
 #  7   8   9  10  11  12
 # 13  14  15  16  17  18
 # 19  20  21  22  23  24
 # 25  26  27  28  29  30
 # 31  32  33  34  35  36
 # 37  38  39  40  41  42
如您所见,我正在通过指定
end=''
来抑制作为换行符的
print()
的默认结束字符。相反,每当
i%6==0
%
是mod)通过调用空的
print()
来打印新行。至于格式,你可以看一下

为了让一切变得更加用户友好,我将它包装在一个函数中

def build_board(cols, rows, sp=2):
    board = []
    l = len(str(cols * rows)) + sp
    for i in range(1, cols * rows + 1):
        board.append(i)
        print('{0:>{1}}'.format(i, l), end='')
        if i % cols == 0:
            print()
    return board

build_board(8, 17, 3)

#         1     2     3     4     5     6     7     8
#         9    10    11    12    13    14    15    16
#        17    18    19    20    21    22    23    24
#        25    26    27    28    29    30    31    32
#       ...
#       121   122   123   124   125   126   127   128
#       129   130   131   132   133   134   135   136

为了使你的电路板看起来漂亮而不仅仅是正确,你还需要一些格式

您可以使用以下方法获得这两种结果:

board = []
for i in range(1,43):
    board.append(i)
    print('{:>4}'.format(i), end='')
    if i % 6 == 0:
        print()

 #  1   2   3   4   5   6
 #  7   8   9  10  11  12
 # 13  14  15  16  17  18
 # 19  20  21  22  23  24
 # 25  26  27  28  29  30
 # 31  32  33  34  35  36
 # 37  38  39  40  41  42
如您所见,我正在通过指定
end=''
来抑制作为换行符的
print()
的默认结束字符。相反,每当
i%6==0
%
是mod)通过调用空的
print()
来打印新行。至于格式,你可以看一下

为了让一切变得更加用户友好,我将它包装在一个函数中

def build_board(cols, rows, sp=2):
    board = []
    l = len(str(cols * rows)) + sp
    for i in range(1, cols * rows + 1):
        board.append(i)
        print('{0:>{1}}'.format(i, l), end='')
        if i % cols == 0:
            print()
    return board

build_board(8, 17, 3)

#         1     2     3     4     5     6     7     8
#         9    10    11    12    13    14    15    16
#        17    18    19    20    21    22    23    24
#        25    26    27    28    29    30    31    32
#       ...
#       121   122   123   124   125   126   127   128
#       129   130   131   132   133   134   135   136

这是另一种方法

import numpy as np

# convert 1D vector into 2D array
data = np.array(board).reshape(6, 7)
print '\n'.join(''.join(str(col)+' ' for col in row) for row in data)

这是另一种方法

import numpy as np

# convert 1D vector into 2D array
data = np.array(board).reshape(6, 7)
print '\n'.join(''.join(str(col)+' ' for col in row) for row in data)

如果您使用的是Python2.x,那么可以基于EV这样做。Kounis解决方案:

board = []
for i in range (1,43):
    board.append(i)
    if i%6 == 0 :print board[i-6:]
如果电路板已经创建,您只需打印它,您可以这样做:

for i in range(1,8) :print board[:i*6][(i-1)*6:]
(董事会[25:]指无25个第一值的董事会,以及
board[:25]表示board的25个第一个值)

如果您使用的是Python2.x,您可以根据EV这样做。Kounis解决方案:

board = []
for i in range (1,43):
    board.append(i)
    if i%6 == 0 :print board[i-6:]
如果电路板已经创建,您只需打印它,您可以这样做:

for i in range(1,8) :print board[:i*6][(i-1)*6:]
(董事会[25:]指无25个第一值的董事会,以及
board[:25]表示board的25个第一个值)

在您发布的EAX示例中,最后三行只有5个字符。如果不是这样的话,您可能已经用mod6识别了模式。简而言之,您可以检查
i
的mod6,当它为0时,执行
print()
您使用的是Python 2还是Python 3?在您发布的EAX示例中,最后三行只有5个字符。如果不是这样的话,您可能已经用mod6识别了模式。简而言之,您可以检查
i
的mod6,当它为0时,执行
print()
您使用的是Python 2还是Python 3?