Python 如何在不更改原始列表的情况下,为每个等于零的列表元素打印空白?
所以我试着做一个数字的井字游戏,你输入数字,如果水平/垂直/对角线加起来是15,你就赢了 起初,我只是把零放在一个空列表中。 但最终,我会用大于零的数字替换零 我想用以下格式打印tic tac toe: 所以我用了这个密码-Python 如何在不更改原始列表的情况下,为每个等于零的列表元素打印空白?,python,list,printing,formatting,time-complexity,Python,List,Printing,Formatting,Time Complexity,所以我试着做一个数字的井字游戏,你输入数字,如果水平/垂直/对角线加起来是15,你就赢了 起初,我只是把零放在一个空列表中。 但最终,我会用大于零的数字替换零 我想用以下格式打印tic tac toe: 所以我用了这个密码- print(" 0 1 2 ") for row in range(self.size): print(" {0} {1} | {2} | {3} ".format(row, self.board[row][0],
print(" 0 1 2 ")
for row in range(self.size):
print(" {0} {1} | {2} | {3} ".format(row, self.board[row][0], self.board[row][1], self.board[row][2]))
if row < 2:
print(' -----------')
我想打印列表中零的空白(不更改实际列表)
因此,如果列表中的元素大于0,则打印它,否则打印空白
解决这个问题的一个办法是:
print(" 0 1 2 ")
for row in range(self.size):
print(" {0} {1} | {2} | {3} ".format(row, self.board[row][0] if self.board[row][0]> 0 else ' ', self.board[row][1] if self.board[row][1]> 0 else ' ', self.board[row][2] if self.board[row][2]> 0 else ' '))
if row < 2:
print(' -----------')
打印(“0 1 2”)
对于范围内的行(自身大小):
打印(“{0}{1}{124;{2}}{124{3}”。格式(行,self.board[row][0]如果self.board[row][0]>0 else',self.board[row][1]如果self.board[row][1]>0 else',self board[row][2]如果self board[row][2]>0 else')
如果行<2:
打印('------------')
但在这种情况下,该行的字符数超过120个,这是不可接受的。
我也不想在另一个for循环中使用for循环,因为这只会增加复杂性和运行时间
我能做什么呢?我试着涂鸦,它还不是pythonic,但输出看起来不错
board = [[0,0,2],[0,1,0],[0,7,0]]
print(' 0 | 1 | 2')
print('---------------------')
rowCount = 0
for eachRow in board:
temp = " | ".join(str(x) for x in eachRow)
temp = temp.replace("0", " " )
print(str(rowCount) + ' | ' + temp)
print('---------------------')
rowCount = rowCount + 1
您可以尝试使用列表理解来减少字符数,但不幸的是,这无助于降低复杂性。请记住,这只是一个例子
board = np.zeros((3,3))
print(" 0 1 2 ")
for row in range(3):
a = [board[row][i] if board[row][i] else "" for i in range(3)]
print(" {0} {1} | {2} | {3} ".format(row, a[0], a[1], a[2] ))
if row < 2:
print(' -----------')
board=np.零((3,3))
打印(“0 1 2”)
对于范围(3)中的行:
a=[board[row][i]如果board[row][i]else“”表示范围(3)内的i
打印(“{0}{1}{124;{2}{124;{3}”。格式(行,a[0],a[1],a[2]))
如果行<2:
打印('------------')
此外,我去年还构建了一个TTT。如果你想看看代码-仅供参考-谢谢,这是可行的,但它仍然在另一个for循环中使用for循环,我不想增加这里的复杂性
board = [[0,0,2],[0,1,0],[0,7,0]]
print(' 0 | 1 | 2')
print('---------------------')
rowCount = 0
for eachRow in board:
temp = " | ".join(str(x) for x in eachRow)
temp = temp.replace("0", " " )
print(str(rowCount) + ' | ' + temp)
print('---------------------')
rowCount = rowCount + 1
board = np.zeros((3,3))
print(" 0 1 2 ")
for row in range(3):
a = [board[row][i] if board[row][i] else "" for i in range(3)]
print(" {0} {1} | {2} | {3} ".format(row, a[0], a[1], a[2] ))
if row < 2:
print(' -----------')