0

我想在每个单独的列表之前打印带有数字的列表列表。基本上,我想更改每一行,使 row[0] 前面有一个数字,然后通过 .join() 运行该行。如果不实际编辑我的主列表板中的行,我该如何做到这一点?

board = [["-"]*9 for i in range(9)]

def print_board(board):
    counter = 0
    for row in board:
        counter += 1
        row_for_printing = row
        row_for_printing [0] =  str(counter) + "   " + row[0]
        print "   ".join(row_for_printing)
        print " "
4

3 回答 3

1

只需使用字符串格式添加数字,例如:

print '{}{}'.format(counter, "   ".join(row))

使用该enumerate()函数生成您的计数器:

def print_board(board):
    for counter, row in enumerate(board, 1):
        print '{}  {}'.format(counter, "   ".join(row))

演示:

>>> print_board(board)
1  -   -   -   -   -   -   -   -   -
2  -   -   -   -   -   -   -   -   -
3  -   -   -   -   -   -   -   -   -
4  -   -   -   -   -   -   -   -   -
5  -   -   -   -   -   -   -   -   -
6  -   -   -   -   -   -   -   -   -
7  -   -   -   -   -   -   -   -   -
8  -   -   -   -   -   -   -   -   -
9  -   -   -   -   -   -   -   -   -
于 2013-08-05T20:55:26.037 回答
0

我想你是在问关于enumerate(),加上关于在同一行打印两个值:

board = [["-"]*9 for i in range(9)]

def print_board(board):
    for counter, row in enumerate(board, start=1):
        print counter, ''.join(row)

有关详细信息enumerate(),请参阅其文档

说到print语句,如果您将提供几个用逗号分隔的变量,它们将打印在同一行,用单个空格分隔:

print 'a', 'b', 'cc'  # this will print "a b cc"
于 2013-08-05T20:56:29.453 回答
0

打印将达到您想要的结果 - 请注意,生成输出不会更改每行中的数据(请注意,字符串无论如何都是不可变的..)

这是您的代码的清晰版本,可以在函数中执行您想要的打印:

board = [["-"]*9 for i in range(9)]

def print_board(board):
    counter = 1
    for row in board:
        print "%d. %s" % (counter, row,)
        counter += 1

或者(注意 enumerate 给你一个包含偏移量和值的元组,偏移量从 0 开始,所以我们加 1 以从 1 开始计数):

board = [["-"]*9 for i in range(9)]

def print_board(board):
    for pos, row in enumerate(board):
        print "%d. %s" % (pos+1, row,)
于 2013-08-05T20:57:24.863 回答