Python 替换列表列表中的字符
我启动了一个suduko项目,需要将列表“board”中的所有0替换为“”。 为什么它不起作用 我得到这个错误:Python 替换列表列表中的字符,python,Python,我启动了一个suduko项目,需要将列表“board”中的所有0替换为“”。 为什么它不起作用 我得到这个错误: AttributeError: 'list' object has no attribute 'replace' 我的代码: board = [[3,7,0,0,5,0,0,0,0], [0,6,0,0,3,0,2,0,0], [0,2,9,4,0,0,0,7,8], [0,0,4,1,7,0,0,8,0],
AttributeError: 'list' object has no attribute 'replace'
我的代码:
board = [[3,7,0,0,5,0,0,0,0],
[0,6,0,0,3,0,2,0,0],
[0,2,9,4,0,0,0,7,8],
[0,0,4,1,7,0,0,8,0],
[0,0,6,3,0,5,9,0,0],
[0,5,0,0,8,4,1,0,0],
[7,1,0,0,0,8,5,6,0],
[0,0,5,0,1,0,0,2,0],
[0,0,0,0,9,0,0,1,3]]
def print_board(board):
pass
a=-1
board=board.replace(0, " ")
for i in board:
a+=1
if a%3==0:
print 25*"*"+""
print "*",i[0],i[1],i[2],"*",i[3],i[4],i[5],"*",i[6],i[7],i[8],"*"
else:
print "*",i[0],i[1],i[2],"*",i[3],i[4],i[5],"*",i[6],i[7],i[8],"*"
print 25*"*"+""
尝试以下方法,使用列表理解:
In [10]: board
Out[10]:
[[3, 7, 0, 0, 5, 0, 0, 0, 0],
[0, 6, 0, 0, 3, 0, 2, 0, 0],
[0, 2, 9, 4, 0, 0, 0, 7, 8],
[0, 0, 4, 1, 7, 0, 0, 8, 0],
[0, 0, 6, 3, 0, 5, 9, 0, 0],
[0, 5, 0, 0, 8, 4, 1, 0, 0],
[7, 1, 0, 0, 0, 8, 5, 6, 0],
[0, 0, 5, 0, 1, 0, 0, 2, 0],
[0, 0, 0, 0, 9, 0, 0, 1, 3]]
In [11]: board=[[x if x!=0 else " " for x in i] for i in board]
In [12]: board
Out[12]:
[[3, 7, ' ', ' ', 5, ' ', ' ', ' ', ' '],
[' ', 6, ' ', ' ', 3, ' ', 2, ' ', ' '],
[' ', 2, 9, 4, ' ', ' ', ' ', 7, 8],
[' ', ' ', 4, 1, 7, ' ', ' ', 8, ' '],
[' ', ' ', 6, 3, ' ', 5, 9, ' ', ' '],
[' ', 5, ' ', ' ', 8, 4, 1, ' ', ' '],
[7, 1, ' ', ' ', ' ', 8, 5, 6, ' '],
[' ', ' ', 5, ' ', 1, ' ', ' ', 2, ' '],
[' ', ' ', ' ', ' ', 9, ' ', ' ', 1, 3]]
board = [[3,7,0,0,5,0,0,0,0],
[0,6,0,0,3,0,2,0,0],
[0,2,9,4,0,0,0,7,8],
[0,0,4,1,7,0,0,8,0],
[0,0,6,3,0,5,9,0,0],
[0,5,0,0,8,4,1,0,0],
[7,1,0,0,0,8,5,6,0],
[0,0,5,0,1,0,0,2,0],
[0,0,0,0,9,0,0,1,3]]
board = [[x if x else ' ' for x in line] for line in board]
board = [[3,7,' ',' ',5,' ',' ',' ',' '],
[' ',6,' ',' ',3,' ',2,' ',' '],
[' ',2,9,4,' ',' ',' ',7,8],
[' ',' ',4,1,7,' ',' ',8,' '],
[' ',' ',6,3,' ',5,9,' ',' '],
[' ',5,' ',' ',8,4,1,' ',' '],
[7,1,' ',' ',' ',8,5,6,' '],
[' ',' ',5,' ',1,' ',' ',2,' '],
[' ',' ',' ',' ',9,' ',' ',1,3]]
您可以使用列表:
In [10]: board
Out[10]:
[[3, 7, 0, 0, 5, 0, 0, 0, 0],
[0, 6, 0, 0, 3, 0, 2, 0, 0],
[0, 2, 9, 4, 0, 0, 0, 7, 8],
[0, 0, 4, 1, 7, 0, 0, 8, 0],
[0, 0, 6, 3, 0, 5, 9, 0, 0],
[0, 5, 0, 0, 8, 4, 1, 0, 0],
[7, 1, 0, 0, 0, 8, 5, 6, 0],
[0, 0, 5, 0, 1, 0, 0, 2, 0],
[0, 0, 0, 0, 9, 0, 0, 1, 3]]
In [11]: board=[[x if x!=0 else " " for x in i] for i in board]
In [12]: board
Out[12]:
[[3, 7, ' ', ' ', 5, ' ', ' ', ' ', ' '],
[' ', 6, ' ', ' ', 3, ' ', 2, ' ', ' '],
[' ', 2, 9, 4, ' ', ' ', ' ', 7, 8],
[' ', ' ', 4, 1, 7, ' ', ' ', 8, ' '],
[' ', ' ', 6, 3, ' ', 5, 9, ' ', ' '],
[' ', 5, ' ', ' ', 8, 4, 1, ' ', ' '],
[7, 1, ' ', ' ', ' ', 8, 5, 6, ' '],
[' ', ' ', 5, ' ', 1, ' ', ' ', 2, ' '],
[' ', ' ', ' ', ' ', 9, ' ', ' ', 1, 3]]
board = [[3,7,0,0,5,0,0,0,0],
[0,6,0,0,3,0,2,0,0],
[0,2,9,4,0,0,0,7,8],
[0,0,4,1,7,0,0,8,0],
[0,0,6,3,0,5,9,0,0],
[0,5,0,0,8,4,1,0,0],
[7,1,0,0,0,8,5,6,0],
[0,0,5,0,1,0,0,2,0],
[0,0,0,0,9,0,0,1,3]]
board = [[x if x else ' ' for x in line] for line in board]
board = [[3,7,' ',' ',5,' ',' ',' ',' '],
[' ',6,' ',' ',3,' ',2,' ',' '],
[' ',2,9,4,' ',' ',' ',7,8],
[' ',' ',4,1,7,' ',' ',8,' '],
[' ',' ',6,3,' ',5,9,' ',' '],
[' ',5,' ',' ',8,4,1,' ',' '],
[7,1,' ',' ',' ',8,5,6,' '],
[' ',' ',5,' ',1,' ',' ',2,' '],
[' ',' ',' ',' ',9,' ',' ',1,3]]
或者您可以使用
map()
:map(lambda行:[x if x else''表示x in line],board)
甚至错误也非常清楚地表明:列表没有名为replace的属性,replace()
用于字符串而不是列表。哎呀。。还有另一种替换方法吗?replace
是一个字符串方法——所以列表没有这个方法。您可能需要列表理解或地图。我可以只使用更改术语吗?我可以执行“board=[[“”如果0代表x行]代表board行]”?@user1562379不可以,这是错误的。我的答案有什么问题?没有错,但是告诉python保持num不变似乎是无用的。所以我想我可以告诉他我想更改的数值顺便说一下,在打印完上面的函数后,我怎么能在函数中添加一个返回值,这样就不会发生了@阿什维尼Chaudhary@user1562379将正在打印的所有内容累积到列表中,并返回返回'\n'。加入(lis)