打印编辑列表而不实际编辑列表

时间:2013-08-05 20:53:15

标签: python list printing

我想在每个列表之前打印带有数字的列表。基本上,我想更改每一行,以便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 " "

3 个答案:

答案 0 :(得分: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  -   -   -   -   -   -   -   -   -

答案 1 :(得分: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()的详细信息,请参阅its documentation

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

print 'a', 'b', 'cc'  # this will print "a b cc"

答案 2 :(得分: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

或者(注意枚举给你一个包含偏移量和值的元组,偏移量从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,)