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